Escher (programming language)
Escher is a purely functional, logic programming language developed in the late 1980s and early 1990s by John Lloyd at the University of Bristol. It combines features from both functional programming languages, like Haskell, and logic programming languages, like Prolog.
One of the key characteristics of Escher is its use of computation as deduction. This means that computations are performed by proving logical statements. Programs are constructed from logical formulas, and the execution of a program involves the search for a proof that the program's goals are true.
Escher supports higher-order functions, which allows functions to be passed as arguments to other functions and returned as values. This feature is inherited from functional programming paradigms. It also incorporates features of logic programming, such as the ability to define relations and use unification as a mechanism for computation.
A significant contribution of Escher was its meta-programming capabilities. It allows programs to manipulate other programs as data. This is achieved through the use of higher-order functions and the ability to reason about the structure of programs. This feature makes Escher suitable for tasks such as program transformation, optimization, and verification.
Escher is considered a research language and was not widely adopted for commercial or industrial applications. Its main influence lies in its contributions to the theory of functional logic programming and its exploration of meta-programming concepts within a declarative framework.