Escher (programming language)

Escher (programming language)

"Escher" 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 the 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.

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))).

External references

* [http://www.cs.bris.ac.uk/Publications/Papers/1000073.pdf Declarative programming in Escher] , JW Lloyd, University of Bristol, Bristol, UK, 1995
* [http://rsise.anu.edu.au/~kee/Escher] , An implementation of Escher.


Wikimedia Foundation. 2010.

Игры ⚽ Поможем сделать НИР

Look at other dictionaries:

  • Lisp (programming language) — Infobox programming language name = Lisp paradigm = multi paradigm: functional, procedural, reflective generation = 3GL year = 1958 designer = John McCarthy developer = Steve Russell, Timothy P. Hart, and Mike Levin latest release version =… …   Wikipedia

  • Haskell (programming language) — Haskell Paradigm(s) functional, lazy/non strict, modular Appeared in 1990 Designed by Simon Peyton Jones, Lennart Aug …   Wikipedia

  • List of programming languages — Programming language lists Alphabetical Categorical Chronological Generational The aim of this list of programming languages is to include all notable programming languages in existence, both those in current use and historical ones, in… …   Wikipedia

  • Gödel, Escher, Bach — Gödel, Escher, Bach: an Eternal Golden Braid   …   Wikipedia

  • Haskell — Класс языка: функциональный, ленивый, модульный Тип исполнения: компилируемый, интерпретируемый Появился в: 1990 …   Википедия

  • Metalanguage — For the programming language, see ML (programming language). Broadly, any metalanguage is language or symbols used when language itself is being discussed or examined.[1] In logic and linguistics, a metalanguage is a language used to make… …   Wikipedia

  • Quine (computing) — A quine s output is exactly the same as its source code A quine is a computer program which takes no input and produces a copy of its own source code as its only output. The standard terms for these programs in the computability theory and… …   Wikipedia

  • Artificial intelligence — AI redirects here. For other uses, see Ai. For other uses, see Artificial intelligence (disambiguation). TOPIO, a humanoid robot, played table tennis at Tokyo International Robot Exhibition (IREX) 2009.[1] Artificial intelligence ( …   Wikipedia

  • Marble Madness — North A …   Wikipedia

  • Recursion — Recursion, in mathematics and computer science, is a method of defining functions in which the function being defined is applied within its own definition. The term is also used more generally to describe a process of repeating objects in a self… …   Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”