EU ÎNOT

EU ÎNOT
Clasa de limba strict, funcțional
Aparut in 1966
Autor Peter Landin
Tip sistem dinamic
A fost influențat Algol 60 , Lisp
influențat SASL , ML , Miranda , Haskell , Clean , Lucid

ISWIM  (din engleză If you  See What I Mean  - if you understand what I mean ) este un limbaj de programare teoretic descris de Peter Landin în 1966 [ 1] ca un limbaj imperativ cu un nucleu funcțional bazat pe λ- calcul cu zahăr sintactic . Caracteristica principală este utilizarea unui operator J pentru starea mutabilă , atribuirea și mecanismul de control  , care permite capturarea continuării curente . Datorită calculului λ, limbajul are funcții de ordin superior și variabile cu scop lexical .  

Semantica operațională a ISWIM este definită de mașina SECD  ( stivă, mediu, cod, dump ) și utilizează apelul după valoare , adică evaluarea strictă . Codul din limbaj trebuia să arate cât mai aproape de notația matematică, așa că Landin a eliminat punctul și virgulă dintre instrucțiuni și blocurile de început-sfârșit tipice limbajelor similare Algol și le-a înlocuit cu un domeniu dependent de aliniere.

O caracteristică specifică a notației ISWIM este utilizarea clauzelor where. Un program ISWIM este o singură expresie limitată la clauze where (definiții de ajutor care includ relații între variabile), expresii condiționate și definiții de funcție. ISWIM (împreună cu CPL ) este prima limbă care folosește această notație.

O caracteristică semantică notabilă a fost capacitatea de a defini noi tipuri de date ca o sumă (potențial recursivă) de produse; pentru aceasta a fost folosită o descriere încăpătoare, destul de asemănătoare cu limbajele naturale, în esență egală cu tipurile de date algebrice din limbajele funcționale moderne. Variabilele din limbaj nu aveau declarații de tip explicite, ceea ce sugerează că Landin plănuia un limbaj tipizat dinamic (cum ar fi Lisp , nu Algol ); presupunând eventual și o formă de inferență de tip .

ISWIM nu a fost niciodată implementat în software, deși PAL lui Art Evan și Gedanken de la John Reynold au folosit majoritatea caracteristicilor cheie ale limbajului lui Landin, inclusiv operațiunile de transfer. Ambele limbi au folosit tastare dinamică. ML lui Milner poate fi considerat echivalent cu ISWIM fără operatorul J, dar îmbogățit cu inferența de tip .

O altă linie de succesori ai ISWIM a scăpat de caracteristicile imperative - atribuirea și operatorul J - dezvoltându-se ca limbaje pur funcționale, trecând ulterior la evaluarea leneșă . SASL , Miranda şi Haskell au mers pe această cale .

Note

  1. P. Landin. Următoarele 700 de limbaje de programare  // Comunicații ale ACM . - 1966. Arhivat la 13 decembrie 2014.