Lisp and its friends
are languages that mix features of functional and
imperative programming styles along with lots of
parentheses. These days, there are three major Lisp
dialects in common use:
What is Lisp? John McCarthy,
initial inventor of Lisp, wrote the following back in 1980,
LISP - Notes on its Past and Future -
1980
As a programming language, LISP is
characterized by the following ideas:
-
Computing with symbolic
expressions rather than numbers.
-
Representation of symbolic
expressions and other information by list structure
in computer memory.
-
Representation of
information on paper, from keyboards and in other
external media mostly by multi-level lists and
sometimes by S-expressions. It has been important
that any kind of data can be represented by a
single general type.
-
A small set of selector and
constructor operations expressed as functions, i.e.
car, cdr and cons.
-
Composition of functions as
a tool for forming more complex
functions.
-
The use of conditional
expressions for getting branching into function
definitions.
-
The recursive use of
conditional expressions as a sufficient tool for
building computable functions.
-
The use of
lambda-expressions for naming functions.
-
The storage of information
on the property lists of atoms.
-
The representation of LISP
programs as LISP data that can be manipulated by
object programs. This has prevented the separation
between system programmers and application
programmers. Everyone can "improve" his LISP, and many of
these "improvements"
have developed into improvements to the
language.
-
The conditional expression
interpretation of Boolean connectives.
-
The LISP function
eval that serves both
as a formal definition of the language and as an
interpreter.
-
Garbage collection as the
means of erasure.
-
Minimal requirements for
declarations so that LISP statements can be
executed in an on-line environment without
preliminaries.
-
LISP statements as a
command language in an on-line
environment.
Ignorant people commonly assert
that " Lisp is interpreted, and hence a
slow language"; if we go back to the original Lisp 1.5
documentation , we discover that Lisp was
intended for use with compilers even from the
very
beginning.