Other meanings of Common Lisp
Programming language
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
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.
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.
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.56Common 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.
The ANSI standard specifies the language, but does not prescribe a single compiler, runtime, library distribution, or development environment.
Help improve the encyclopedia. Reports go straight to the site manager.