1 Overview

This document describes a set of Emacs Lisp facilities borrowed from Common Lisp. All the facilities are described here in detail. While this document does not assume any prior knowledge of Common Lisp, it does assume a basic familiarity with Emacs Lisp.

Common Lisp is a huge language, and Common Lisp systems tend to be massive and extremely complex. Emacs Lisp, by contrast, is rather minimalist in the choice of Lisp features it offers the programmer. As Emacs Lisp programmers have grown in number, and the applications they write have grown more ambitious, it has become clear that Emacs Lisp could benefit from many of the conveniences of Common Lisp.

The CL package adds a number of Common Lisp functions and control structures to Emacs Lisp. While not a 100% complete implementation of Common Lisp, it adds enough functionality to make Emacs Lisp programming significantly more convenient.

Some Common Lisp features have been omitted from this package for various reasons:

This package was originally written by Dave Gillespie, daveg@synaptics.com, as a total rewrite of an earlier 1986 cl.el package by Cesar Quiroz. Care has been taken to ensure that each function is defined efficiently, concisely, and with minimal impact on the rest of the Emacs environment. Stefan Monnier added the file cl-lib.el and rationalized the namespace for Emacs 24.3.