Catalysoft   Turtle
home products articles about us contact us

What is 'LISP'?

LISP is one of the oldest programming languages that is still in use. The name comes from LISt Processing, and lists are one of the central features of the language. LISP is essentially a functional language, but you can also choose to use it procedurally. Therefore, some LISP programmers are purists who frown on constructs such as do*, which has side-effects, and others use such features because they find them convenient.

As an example, the following program computes a factorial:

(defun fac(n)
  (if (= n 0)
      1
      (* n (fac (- n 1)))))

Defun means "define function", and the function fac is a function of one argument, n. The evaluation of the function first compares n for equality with zero. If n is 0, then 1 is returned as the value of the function; otherwise the result is n times the factorial of n-1.

The basic syntax of all LISP code (with the exception of a few special constructs) is (function arg1 arg2 ... argN), where the arguments can themselves be function calls. As you can see from the example, this typically leads to some deeply parenthesised expressions, which take some getting used to.

LISP is also an object-oriented language, using the Common LISP Object System, or CLOS.

Some developers argue against LISP because it is weakly typed. Proponents argue the speed of development and flexibility of coding more than makes up for the compile-time errors that you would catch with strong typing. Moreover, you can enforce type checking if you prefer by using constructs such as the.

cover The standard text for LISP programmers is Common LISP : The Language (LISP Series)

If you have no experience of LISP, a good way of trying it out might be to download CLISP.

Other Terms

A9AlgernonantAOPArtificial Intelligence
awkBeanShellCCamel CaseCastor
Cladonia Exchanger XML EditorCLISPcollabetitioncygwinDAO
DOMEclipseEditiXErlangExpert System
Extreme ProgrammingFirefoxfirst class objectFortranFreeMind
GroovyHaskellHIBERNATEHSQLIDE
JathaJavaJAXBjBPMJDBC
JENAJESSJRulesJUnitJython
KerberosMalwareOMGPrologProtege
PythonRDFSESAMESquiggleSUMO
SwoogleTrojan HorseXML-Java BindingXMLSpy