Escher (programming language)

Escher (named for M. C. Escher, "a master of endless loops") is a declarative programming language that supports both functional programming and logic programming models, developed by J.W. Lloyd in the mid-1990s. It was designed mostly as a research and teaching vehicle. The basic view of programming exhibited by Escher and related languages is that a program is a representation of a theory in some logic framework, and the program's execution (computation) is a deduction from the theory. The logic framework for Escher is Alonzo Church's simple theory of types.

Escher
Paradigmdeclarative: functional, logic
Designed byJ.W. Lloyd
First appearedmid-1990s
Typing disciplinestatic, manifest
Major implementations
Kee Siong Ng's implementation
Influenced by
simple theory of types

Escher, notably, supports I/O through a monadic type representing the 'outside world', in the style of Haskell. One of the goals of Escher's designers was to support meta-programming, and so the language has comprehensive support for generating and transforming programs.

Examples

MODULE      Lambda.
CONSTRUCT   Person/0.
FUNCTION    Jane, Mary, John: One -> Person.

FUNCTION    Mother : Person * Person -> Boolean.
Mother(x,y) =>
    x=Jane & y=Mary.

FUNCTION    Wife : Person * Person -> Boolean.
Wife(x,y) =>
    x=John & y=Jane.

FUNCTION    PrimitiveRel : (Person * Person -> Boolean) -> Boolean.
PrimitiveRel(r) =>
    r=Mother \/ r=Wife.

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))).
gollark: Once D-D reactor #1 hits 20kRF/t I'll try and turn on D-D reactor #2 and then D-T reactor #1.
gollark: Spin up faster, D-D reactor #1!
gollark: Of what?
gollark: *cough*Draconic Evolution*cough*
gollark: If mods need "balance" by making you do more work instead of actual thinking, they are doing it wrong.

References

This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.