Escher (programovací jazyk) - Escher (programming language)
Paradigma | deklarativní: funkční, logika |
---|---|
Navrhl | J.W. Lloyd |
Poprvé se objevil | polovina 90. let |
Psací disciplína | statický, manifest |
Hlavní, důležitý implementace | |
Implementace Kee Siong Ng | |
Ovlivněno | |
jednoduchá teorie typů |
Escher (pojmenováno pro M. C. Escher, "mistr nekonečných smyček") je a deklarativní programovací jazyk který podporuje obojí Funkcionální programování a logické programování modely, vyvinuté J.W. Lloyd v polovině 90. let. Byl navržen převážně jako výzkumný a výukový prostředek. Základní pohled na programování vykazovaný Escherem a příbuznými jazyky je ten, že program je v některých reprezentace teorie logický rámec a provedení programu (výpočet) je dedukcí z teorie. Logický rámec pro Escher je Alonzo Church je jednoduchá teorie typů.
Escher zejména podporuje I / O prostřednictvím a monadický typ představující "vnější svět" ve stylu Haskell Jedním z cílů Escherových návrhářů byla podpora metaprogramování, a jazyk má tedy komplexní podporu pro generování a transformaci programů.
Příklady
MODUL Lambda.CONSTRUCT Osoba / 0.FUNKCE Jane, Mary, John: Jedna -> Osoba.FUNKCE Matka: Osoba * Osoba -> Boolean.Mother (x, y) => x = Jane & y = Mary.FUNKCE Manželka: Osoba * Osoba -> Boolean.Wife (x, y) => x = John & y = Jane.FUNCTION PrimitiveRel: (Osoba * Osoba -> Boolean) -> Boolean.PrimitiveRel (r) => r = Matka / r = Manželka .FUNCTION Rel: (Person * Person -> Boolean) -> Boolean.Rel (r) => PrimitiveRel (r) / (SOME [r1, r2] (r = LAMBDA [u] (SOME [z] (r1 (Fst) (u), z) & r2 (z, Snd (u)))) & PrimitiveRel (r1) & PrimitiveRel (r2))).
Reference
- Deklarativní programování v Escheru, JW Lloyd, University of Bristol, Bristol, UK, 1995
- Implementace Eschera