JEG SVØMMER

JEG SVØMMER
Sprog klasse streng, funktionel
Dukkede op i 1966
Forfatter Peter Landin
Type system dynamisk
Blev påvirket Algol 60 , Lisp
påvirket SASL , ML , Miranda , Haskell , Clean , Lucid

ISWIM  (fra det engelske If you  See What I Mean  - if you understand what I mean ) er et teoretisk programmeringssprog beskrevet af Peter Landin i 1966 [ 1] som et imperativt sprog med en funktionel kerne baseret på λ- calculus med syntaktisk sukker . Hovedfunktionen er brugen af ​​en J-operator til den foranderlige tilstand , tildeling og kontrolmekanisme  , som gør det muligt at fange den aktuelle fortsættelse . Takket være λ-regningen har sproget funktioner af højere orden og leksikalske variabler .  

Den operationelle semantik af ISWIM er defineret af SECD- maskinen ( stak, miljø, kode, dump ), og bruger call by value , dvs. streng evaluering . Koden i sproget skulle se så tæt som muligt på matematisk notation, så Landin fjernede semikolonet mellem udsagn og begyndelsesblokkene, der er typiske for Algol-lignende sprog og erstattede dem med et tilpasningsafhængigt omfang.  

Et specifikt træk ved ISWIM-notationen er brugen af ​​where-klausuler. Et ISWIM-program er et enkelt udtryk, der er begrænset til where-sætninger (hjælpedefinitioner, der inkluderer relationer mellem variabler), betingede udtryk og funktionsdefinitioner. ISWIM (sammen med CPL ) er det første sprog, der bruger denne notation.

Et bemærkelsesværdigt semantisk træk var evnen til at definere nye datatyper som en (potentielt rekursiv) sum af produkter; til dette blev der brugt en fyldig beskrivelse, ganske lig naturlige sprog, i det væsentlige lig med algebraiske datatyper i moderne funktionelle sprog. Variabler i sproget havde ingen eksplicitte typedeklarationer, hvilket tyder på, at Landin planlagde et dynamisk skrevet sprog (som Lisp , ikke Algol ); muligvis også antaget en form for typeslutning .

ISWIM blev aldrig implementeret i software, selvom Art Evans PAL og John Reynolds Gedanken brugte de fleste af de vigtigste funktioner i Landins sprog, inklusive overførselsoperationer. Begge disse sprog brugte dynamisk skrivning. Milners ML kan betragtes som ækvivalent med ISWIM uden J-operatoren, men beriget med typeinferens .

En anden række af efterfølgere til ISWIM slap af med imperative funktioner - tildeling og J-operatøren - udviklede sig som rent funktionelle sprog, og skiftede efterfølgende til doven evaluering . SASL , Miranda og Haskell gik denne vej .

Noter

  1. P. Landin. De næste 700 programmeringssprog  // ACM's kommunikation . - 1966. Arkiveret 13. december 2014.