JÁ PLAVU

JÁ PLAVU
Jazyková třída přísný, funkční
Objevil se v 1966
Autor Peter Landin
Typový systém dynamický
Byl ovlivněn Algol 60 , Lisp
ovlivnil SASL , ML , Miranda , Haskell , Clean , Lucid

ISWIM  (z anglického If you  See What I Mean  - jestli rozumíte tomu, co mám na mysli ) je teoretický programovací jazyk popsaný Peterem Landinem v roce 1966 [ 1] jako imperativní jazyk s funkčním jádrem založeným na λ-kalkulu se syntaktickým cukrem . Hlavním rysem je použití proměnlivého stavu , přiřazení a ovládacího mechanismu  J-operátor , který vám umožní zachytit aktuální pokračování . Díky λ-kalkulu má jazyk funkce vyššího řádu a lexikálně ohraničené proměnné .

Operační sémantika ISWIM je definována strojem SECD  ( zásobník, prostředí, kód, výpis ) a využívá call by value , tedy přísné hodnocení . Kód v jazyce se musel co nejvíce podobat matematickému zápisu, takže Landin odstranil středník mezi příkazy a počátečními bloky typickými pro jazyky podobné Algolu a nahradil je rozsahem závislým na zarovnání.

Specifickým rysem notace ISWIM je použití klauzulí where. Program ISWIM je jediný výraz omezený na klauzule where (pomocné definice, které zahrnují vztahy mezi proměnnými), podmíněné výrazy a definice funkcí. ISWIM (společně s CPL ) je prvním jazykem, který používá tuto notaci.

Pozoruhodným sémantickým rysem byla schopnost definovat nové datové typy jako (potenciálně rekurzivní) součet produktů; k tomu byl použit rozsáhlý popis, dosti podobný přirozeným jazykům, v podstatě rovný algebraickým datovým typům v moderních funkcionálních jazycích. Proměnné v jazyce neměly žádné explicitní deklarace typu, což naznačuje, že Landin plánoval dynamicky typovaný jazyk (jako Lisp , nikoli Algol ); možná také předpokládat nějakou formu odvození typu .

ISWIM nebyl nikdy implementován v softwaru, ačkoli Art Evan 's PAL a John Reynold's Gedanken používali většinu klíčových vlastností Landinova jazyka, včetně převodových operací. Oba tyto jazyky používaly dynamické psaní. Milnerův ML lze považovat za ekvivalent ISWIM bez J-operátora, ale obohacený o odvození typu .

Další řada nástupců ISWIM se zbavila imperativních funkcí - přiřazení a operátoru J - vyvíjejících se jako čistě funkční jazyky, následně přešlo na líné vyhodnocování . SASL , Miranda a Haskell šli touto cestou .

Poznámky

  1. P. Landin. Dalších 700 programovacích jazyků  // Komunikace ACM . - 1966. Archivováno 13. prosince 2014.