← New search

Other meanings of Common Lisp

Programming language

Common Lisp

Common Lisp is a multi-paradigm programming language standardized by ANSI. It combines functional, imperative, object-oriented, and reflective techniques with interactive development, lexical scoping, dynamic typing, and an extensive standard library.1

1984
first ANSI-related standardization effort
standardization
ANSI X3.226-1994
language standard
specification
CLOS
standard object system
object orientation
1

Definition and origins

Common Lisp is a standardized, general-purpose member of the Lisp family designed to unify several earlier Lisp dialects. Its specification defines a large language with symbols, lists, arrays, hash tables, numeric types, streams, conditions, packages, macros, and a compilation model.1 The language emerged during the 1980s from efforts to consolidate Maclisp, Interlisp, Lisp Machine Lisp, and other dialects, while preserving implementation flexibility. Unlike a small educational Lisp, Common Lisp is intended for substantial software systems and permits both compiled and interpreted execution. Its reader, evaluator, compiler, and macro facilities expose unusually much of the language's own structure, supporting interactive experimentation without making production deployment impossible.

2

Language design and programming model

Common Lisp supports multiple programming styles within one standardized environment. Lexical closures make higher-order and functional programming practical, while mutable variables, objects, generic functions, and explicit iteration support imperative and object-oriented designs.1 The Common Lisp Object System, usually called CLOS, uses generic functions and multiple inheritance rather than requiring methods to belong to a single class; method combination and the Metaobject Protocol extend this model in reflective implementations.1 Macros transform source forms before compilation, allowing domain-specific notation and compile-time computation. Conditions and restarts provide a structured alternative to ordinary exception handling: a program can signal a problem, inspect it, and offer recovery options without necessarily unwinding the entire computation.

3

Implementations and development practice

Common Lisp is defined by a language standard, while individual implementations supply compilers, runtimes, libraries, and development tools. Widely used implementations include SBCL, Clozure CL, ECL, and GNU CLISP; they differ in compilation strategies, foreign-function interfaces, operating-system integration, and implementation-specific extensions.34

Interactive development commonly uses a read-eval-print loop, incremental compilation, a debugger, and a communication protocol such as SLIME or SLY inside Emacs. The standard's condition system and image-oriented workflows make it possible to repair or redefine parts of a running program. ASDF is the dominant build-system convention, while Quicklisp provides a widely used distribution mechanism for third-party libraries.56

4

Lesser-known aspects

Common Lisp's less visible strengths lie in its extensibility and its deliberate tolerance for implementation variation. The reader can be customized with dispatch macros and readtables, so applications can introduce controlled textual syntaxes; packages provide namespace management but are not equivalent to lexical modules.1 The language also distinguishes ordinary functions from compiler macros, symbol macros, reader macros, and compiler-macro optimizations, giving programmers several different extension points. Its numeric tower specifies integers, ratios, floating-point numbers, and complex numbers as integrated language types, although precision and performance characteristics remain implementation-dependent. Common Lisp has appeared in artificial-intelligence research, symbolic algebra, expert systems, language tooling, and long-lived commercial systems, while its comparatively small contemporary community sustains a notably rich ecosystem of implementations and libraries.

Glossary

CLOS
The Common Lisp Object System, a generic-function-based object system with classes, multiple inheritance, method combination, and metaclasses.
condition system
Common Lisp's mechanism for signaling situations and selecting handlers or restart options, often without immediate stack unwinding.
lexical closure
A function that retains access to bindings from its defining lexical environment.
macro
A program that transforms source forms, usually during compilation or macro expansion, into other Lisp forms.
REPL
A read-eval-print loop that reads expressions, evaluates them, and displays their results interactively.

The ANSI standard specifies the language, but does not prescribe a single compiler, runtime, library distribution, or development environment.