Features of Common Lisp

Interactive development

Development in Common Lisp is interactive. There's no separate compile/run/debug cycle. Instead of that, the program is developed while it runs. Compilation is incremental, and functions can be created and updated on the fly. As the program is running, all objects are available and can be inspected all the time. This is much more than a simple REPL; the whole environment, from the IDE to the language is prepared for this type of development.


Common Lisp is a carefully designed language with a long history. It was standarized in 1980 and the language has not changed since but it keeps up with the times thanks to its modability and metaprogramming capabilities. This makes it very likely that your program will continue to run unmodified for several years.


Being a meta language, Lisp approach to problem solving is to define idioms (small Domain Specific Languages) as close to the problem domain as possible. This results in very succint and declarative solutions, at a level which is difficult to achieve in other programming languages. CL flexibility also facilitates a bottom-up programming approach.


Most Common Lisp compilers produce fast code. Programs can be type annotated and the compilers can apply optimizations based on them. CL also supports different levels of debugging, safety and speed. Performance is usually better than interpreted languages like Python and Ruby, and close to C in some cases.


Uniformity is present in both syntax and data structures. Everything being an S-expression, there are not many syntax oddities to think about. And Lisp main data structure is the list.


Lisp implements and can adapt to several programming paradigms. It supports first class functions, closures and destructuring (among other things), commonly present in functional languages. And comes with CLOS, one of the most powerful object systems in existence. Support for other paradigms can often be implemented as a library as has been done for the logic paradigm.

Innovative / Advanced

Method combinations. Multiple dispatch. Multiple-values. Meta Object protocol.

See Features of Common Lisp by Abhishek Reddy for a more detailed overview of the language features.