Escher (programming language)
| Escher | |
|---|---|
| Paradigm | declarative: functional, logic | 
| Designed by | J.W. Lloyd | 
| First appeared | mid-1990s | 
| Typing discipline | static, manifest | 
| Major implementations | |
| Kee Siong Ng's implementation | |
| Influenced by | |
| simple theory of types | |
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, 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.