If you have anything to add to this list please let me know.
Links to related work:
Jan Skibinski's functional interface to create PDF documents. Targets Haskell,
ML and an earlier (much much earlier!) Q version. (This is a link to the WaybackMachine. Unfortunately, Jan's
original website www.numeric-quest.com went offline at
some time in 2001.)
egg: John Cowan's egg (Chicken Scheme library) makes available
the facilities of the Q language to Chicken programmers. Chicken is a
compiler for the Scheme programming language.
Additional information on term rewriting:
- Term rewriting comes from a mathematical field called universal algebra,
and is one of cornerstones of modern computer algebra
systems. In the 1980s Michael O'Donnell
pioneered the use of term rewriting as a programming language, and he also
coined the term "equational programming".
- More information about term rewriting can be found at the Rewriting Home Page of
the IFIP Working Group 1.6.
Links to other software which also uses term rewriting as an underlying
- Aardappel: Wouter van
Oortmerssen's visual programming language based on term rewriting.
- ELAN: An
environment for specifying and prototyping deduction systems in a language
based on rewrite rules controlled by strategies.
- EPIC: A reduction engine
intended as a target for term rewriting compilers.
- Escher: An
experimental functional+logic programming language.
Arguably one of the most popular computer algebra systems out there. Other
well-known examples are Maple and REDUCE.
- OBJ: The
mother of all algebraic programming and specification languages (actually, an
entire family of languages supporting equational programming and theorem
- OPAL: A more modern
algebraic programming language which also includes support for typical FP
features such as currying and higher-order functions.
- Otter: A theorem
prover which has an embedded equational programming system.
- Pure: Pure is my stab at the
"next Q", a much improved, complete rewrite of Q which compiles to
fast native code and is slated to eventually become Q's successor.
- Req: Darius Bacon's
calculator programmable with rewrite rules.
- Stratego: A
language and toolset for program transformation, useful for creating compilers
and program generators.
Links to other modern functional programming languages:
- Clean: A Haskell-like lazy
functional language, with some additional features, but not as
widely used as Haskell.
- Erlang: This language was developed
by Ericsson for use in telecommunication hardware. Like Q, it uses dynamic
typing which has become somewhat unusual in the FP language zoo.
- Haskell: The premier lazy functional
language. 'Nuff said.
The lazy functional language developed by David Turner and predecessor of
Haskell. Might have become the standard lazy functional language, but Turner
decided to market it as commercial software instead. (A binary package
with the interpreter can be downloaded freely from the above website for
personal use, but no open source implementation is available.) The language is
still of historical interest, though, and apparently was the basis of the
notation used in the original edition of Bird and Wadler's book on functional
programming which also inspired Q's syntax.
- OCaml: A popular implementation of the
ML programming language. ML was probably the first "modern style" (i.e., non
Lisp-alike, statically typed) FP language which saw fairly widespread
- The above is only the tip of the iceberg; see the Wikipedia entry on Functional
Programming for more information and links.