
Next: Data Types
Up: FLIP: Functional-plus-Logic Programming on
Previous: Abstract Machines
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:
- 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
.
- 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).
- 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.