MINÄ UIN | |
---|---|
Kieliluokka | tiukka, toimiva |
Esiintyi | 1966 |
Tekijä | Peter Landin |
Tyyppijärjestelmä | dynaaminen |
Vaikutettu | Algol 60 , Lisp |
vaikutti | SASL , ML , Miranda , Haskell , Clean , Lucid |
ISWIM ( englanniksi If you See What I Mean - jos ymmärrät mitä tarkoitan ) on teoreettinen ohjelmointikieli , jonka Peter Landin kuvasi vuonna 1966 [ 1] pakolliseksi kieleksi , jonka toiminnallinen ydin perustuu λ-laskentaan syntaktisen sokerin kanssa . Pääominaisuus on J-operaattorin käyttö muuttuvaan tilaan , osoitus- ja ohjausmekanismiin , joka mahdollistaa nykyisen jatkon kaappaamisen . λ-laskennan ansiosta kielellä on korkeamman asteen funktioita ja leksikaalisia muuttujia .
ISWIM: n toiminnallinen semantiikka on SECD - koneen määrittelemä ( pino, ympäristö, koodi, dump ), ja se käyttää arvon mukaan kutsua eli tiukkaa arviointia . Kielen koodin piti näyttää mahdollisimman läheltä matemaattista merkintää, joten Landin poisti puolipisteen lauseiden ja Algol-kaltaisille kielille tyypillisten aloituslohkojen väliltä ja korvasi ne kohdistuksesta riippuvalla laajuudella.
ISWIM-merkinnän erityispiirre on missä-lauseiden käyttö. ISWIM-ohjelma on yksittäinen lauseke, joka on rajoitettu jossa-lauseisiin (apumääritelmiin, jotka sisältävät muuttujien välisiä suhteita), ehdollisiin lausekkeisiin ja funktiomääritelmiin. ISWIM (yhdessä CPL :n kanssa ) on ensimmäinen kieli, joka käyttää tätä merkintää.
Merkittävä semanttinen ominaisuus oli kyky määritellä uusia tietotyyppejä (mahdollisesti rekursiivisena) tuotteiden summana; tätä varten käytettiin tilavaa kuvausta, joka oli melko samanlainen kuin luonnolliset kielet, oleellisesti samanlainen kuin algebralliset tietotyypit nykyaikaisissa toiminnallisissa kielissä. Kielen muuttujilla ei ollut eksplisiittisiä tyyppimäärityksiä, mikä viittaa siihen, että Landin suunnitteli dynaamisesti kirjoitettua kieltä (kuten Lisp , ei Algol ); mahdollisesti olettaen myös jonkinlaisen tyyppipäätelmän .
ISWIMiä ei koskaan otettu käyttöön ohjelmistoissa, vaikka Art Evanin PAL ja John Reynoldin Gedanken käyttivät useimpia Landinin kielen avainominaisuuksia, mukaan lukien siirtotoiminnot. Molemmat näistä kielistä käyttivät dynaamista kirjoitusta. Milnerin ML :n voidaan katsoa vastaavan ISWIM:ää ilman J-operaattoria, mutta rikastettuna tyyppipäätelmillä .
Toinen ISWIM:n seuraajalinja pääsi eroon pakollisista ominaisuuksista - kohdistamisesta ja J-operaattorista - kehittyen puhtaasti toiminnallisina kielinä, ja siirtyi sittemmin laiskaan arviointiin . SASL , Miranda ja Haskell menivät tähän suuntaan .