JAG SIMMAR

JAG SIMMAR
Språkklass strikt, funktionell
Framträdde i 1966
Författare Peter Landin
Typ system dynamisk
Blivit påverkad Algol 60 , Lisp
påverkas SASL , ML , Miranda , Haskell , Clean , Lucid

ISWIM  (från engelskan If you  See What I Mean  - if you understand what I mean ) är ett teoretiskt programmeringsspråk som beskrevs av Peter Landin 1966 [ 1 ] som ett imperativt språk med en funktionell kärna baserad på λ- kalkyl med syntaktisk socker . Huvudfunktionen är användningen av en J-operator för det föränderliga tillståndet , tilldelningen och kontrollmekanismen  , vilket gör det möjligt att fånga den aktuella fortsättningen . Tack vare λ-kalkylen har språket funktioner av högre ordning och lexikalt omfångade variabler .  

Den operativa semantiken för ISWIM definieras av SECD -maskinen ( stack, miljö, kod, dump ) och använder call by value , dvs strikt utvärdering . Koden i språket behövde se så nära matematisk notation som möjligt, så Landin tog bort semikolonet mellan påståenden och start-slut-blocken som är typiska för Algol-liknande språk och ersatte dem med en anpassningsberoende omfattning.  

En specifik egenskap hos ISWIM-notationen är användningen av where-satser. Ett ISWIM-program är ett enda uttryck begränsat till where-satser (hjälpardefinitioner som inkluderar relationer mellan variabler), villkorliga uttryck och funktionsdefinitioner. ISWIM (tillsammans med CPL ) är det första språket som använder denna notation.

En anmärkningsvärd semantisk egenskap var möjligheten att definiera nya datatyper som en (potentiellt rekursiv) summa av produkter; för detta användes en rymlig beskrivning, ganska lik naturliga språk, i huvudsak lika med algebraiska datatyper i moderna funktionella språk. Variabler i språket hade inga explicita typdeklarationer, vilket tyder på att Landin planerade ett dynamiskt skrivet språk (som Lisp , inte Algol ); möjligen anta någon form av typinferens också .

ISWIM implementerades aldrig i mjukvara, även om Art Evans PAL och John Reynolds Gedanken använde de flesta av nyckelfunktionerna i Landins språk, inklusive överföringsoperationer. Båda dessa språk använde dynamisk typning. Milners ML kan anses likvärdig med ISWIM utan J-operatorn, men berikad med typinferens .

En annan rad efterföljare till ISWIM blev av med imperativa funktioner - tilldelning och J-operatören - utvecklades som rent funktionella språk, och bytte sedan till lat utvärdering . SASL , Miranda och Haskell gick den här vägen .

Anteckningar

  1. P. Landin. De nästa 700 programmeringsspråken  // ACM: s kommunikation . - 1966. Arkiverad 13 december 2014.