Following is a list of all known incompatibilities between this package and the older Quiroz `cl.el' package.
This package's emulation of multiple return values in functions is incompatible with that of the older package. That package attempted to come as close as possible to true Common Lisp multiple return values; unfortunately, it could not be 100% reliable and so was prone to occasional surprises if used freely. This package uses a simpler method, namely replacing multiple values with lists of values, which is more predictable though more noticeably different from Common Lisp.
defkeyword form and
keywordp function are not
implemented in this package.
rem functions are suffixed
by `*' in this package to avoid collision with existing
functions in Emacs 18 or Emacs 19. The older package simply
redefined these functions, overwriting the built-in meanings and
causing serious portability problems with Emacs 19. (Some more
recent versions of the Quiroz package changed the names to
cl-member, etc.; this package defines the latter names as
Certain functions in the old package which were buggy or inconsistent
with the Common Lisp standard are incompatible with the conforming
versions in this package. For example,
were synonyms for
memq in that package,
failed to preserve correct order of evaluation of its arguments, etc.
Finally, unlike the older package, this package is careful to
prefix all of its internal names with
cl-. Except for a
few functions which are explicitly defined as additional features
letf), this package does not
export any non-`cl-' symbols which are not also part of Common
The CL package includes emulations of some features of the
old `cl.el', in the form of a compatibility package
cl-compat. To use it, put
(require 'cl-compat) in
The old package defined a number of internal routines without
cl- prefixes or other annotations. Call to these routines
may have crept into existing Lisp code.
provides emulations of the following internal routines:
setf forms translated into calls to internal
functions that user code might call directly. The functions
setelt fall in
this category; they are defined by
cl-compat, but the
best fix is to change to use
cl-compat file defines the keyword functions
which are not defined by the new CL package because the
use of keywords as data is discouraged.
build-klist mechanism for parsing keyword arguments
is emulated by
macro is not, however, and in any case it's best to change to
use the more natural keyword argument processing offered by
Multiple return values are treated differently by the two
Common Lisp packages. The old package's method was more
compatible with true Common Lisp, though it used heuristics
that caused it to report spurious multiple return values in
certain cases. The
cl-compat package defines a set
of multiple-value macros that are compatible with the old
CL package; again, they are heuristic in nature, but they
are guaranteed to work in any case where the old package's
macros worked. To avoid name collision with the "official"
multiple-value facilities, the ones in
cl-round are defined by
cl-compat to use the
old-style multiple-value mechanism, just as they did in the old
package. The newer
floor* and friends return their two
results in a list rather than as multiple values. Note that
older versions of the old package used the unadorned names
cl-compat cannot use
these names because they conflict with Emacs 19 built-ins.
Go to the first, previous, next, last section, table of contents.