Welcome to the Dictionary of Programming Languages, a compendium
of computer coding methods assembled to provide information and
aid your appreciation for computer science history.
Browse the dictionary by clicking on a section:
A
B
C
D
E
F
G
H
I
JK
L
M
N
O
P
QR
S
T
UV
WXYZ+
Get a full dump of the dictionary:
List of Names
Short Form
Full Form
- LIFE
- Language type:
L - Rule-based or logical
- Description:
LIFE is an interpreted logic programming
language, related to Prolog, with features
for functional and object-oriented programming.
Intended mainly as a research vehicle, LIFE
integrates inheritance, functional,
and constraint rule programming
styles into a logic programming framework.
The syntax of LIFE is similar to that of
Prolog, and its logic semantics are also
related to Prolog. Prolog uses
indexed Herbrand terms as its primary
data element, but LIFE uses extensible
psi-terms. Primitive data
types supported by
LIFE include booleans,
integers, floats, symbols,
strings, and sorts (a sort is a kind of
type descriptor). In addition to
psi-terms, LIFE supports lists with
the same syntax as Prolog.
As a functional language, LIFE supports
higher-order functions, currying, and
similar operations. It does not support
lazy evaluation.
An implementation of the LIFE language is
available for free download, it is written
in C and works on Unix
systems. A programmer's manual and various
scholarly papers are also available.
- Origin:
Hassan Ait-Kaci, MCC Texas, 1993.
- See Also:
- Remarks:
The name LIFE is an acronym for
Logic, Inheritance, Functions, and Equations.
One of the most novel aspects of LIFE, as
a logic programming language, is its notion
of sorts. Sorts are like types, and
like the types in most object-oriented
languages, have inheritance relationships.
Several different institutions have hosted
LIFE development: MCC in Texas, DEC's
Paris Research Lab, and most recently
Simon Frasier U in Canada.
- Links:
- Date:
- Sample code:
An example of the Sieve of Erastosthenes on
LIFE, from the Wild LIFE Handbook.
global(sieve)?
global(limit)?
main :-
write("N=?"), read_token(limit & int),
next_prime(2), nl.
remove_multiples(P,M) :-
cond(M < limit,
(sieve.M <-multiple_of(P),remove_multiples(P,M+P))
).
next_prime(P) :- P < limit, !, SP=sieve.P,
( SP=prime(P),
!,
write(P,' '),
remove_multiples(P,2*P)
;
succeed
),
next_prime(P+1).
next_prime(P).
Descriptions in this dictionary are ©1997-99 Neal Ziring. Some
examples copyright of their respective authors. Some
technologies and languages are trademarked. Permission to
copy descriptions is granted as long as authorship credit is preserved.
Comments on this dictionary, corrections and suggestions, are all welcome.
Please use email, the address is ziring@home.com
[Ziring MicroWeb Home]
[Dictionary Start]
[Sign Guestbook]
Dictionary and script maintained by Neal Ziring, last major modifications 3/18/98. Most recent
additions to dictionary and master list, 1/00.