LIFE

From CMU Artificial Intelligence Repository:

LIFE (Logic, Inheritance, Functions, and Equations) is an experimental programming language with a powerful facility for structured type inheritance. It reconciles styles from functional programming, logic programming, and object-oriented programming. It subsumes, and fully contains the functionality of, the precursor languages LOGIN and Le_Fun. The syntax of Wild_LIFE has been kept as close as possible to that of the Edinburgh family of Prolog so that Prolog compatibility is easy to achieve.

From a theoretical point of view, LIFE implements a constraint logic programming language with equality (unification) and entailment (matching) constraints over order-sorted feature terms. The interplay of unification and matching provides an implicit coroutining facility thanks to an automatic suspension mechanism. This allows interleaving interpretation of relational and functional expressions which specify structural dependencies on objects.

Wild_LIFE includes a set of non-trivial example programs including an incremental Gaussian equation solver, a PERT scheduler, a full LIFE parser, a flower-drawing program that handles X events, uses an X toolkit and a 3D turtle graphics package written in LIFE and compiles rewrite rules into LIFE. It also includes an extensive test suite to verify the correct operation of the interpreter.