Next: Data Types Up: FLIP: Functional-plus-Logic Programming on Previous: Abstract Machines

LL: LISP light

LL (LISP light) is a subset of (COMMON) LISP [\protect\citeauthoryearSteele Jr.1984][\protect\citeauthoryearMcCarthy et al.1962] extended by PROLOG structures. In addition to purely functional builtins, it contains some extra-functional builtins for the following reasons:

  1. Existing (COMMON) LISP programs can be integrated with relational programs without having to re-implement their non-functional parts like global variables, re-assignments via setq, or loops.
  2. LL functions can be used to augment relational languages by (new) extra-logicals. Some of these extensions require non-functional behaviour, e.g. bagof, which can be implemented via global LL variables (see section 4.3).
  3. Deterministic tail-recursive relations and functions can be translated into loops to speed up execution.

In the following, LL's data types, special forms, builtins, and user-definable functions will be described.

Harold Boley & Michael Sintek (