[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Following is a list of all known incompatibilities between this package and Common Lisp as documented in Steele (2nd edition).
Certain function names, such as member
, assoc
, and
floor
, were already taken by (incompatible) Emacs Lisp
functions; this package appends ‘*’ to the names of its
Common Lisp versions of these functions.
The word defun*
is required instead of defun
in order
to use extended Common Lisp argument lists in a function. Likewise,
defmacro*
and function*
are versions of those forms
which understand full-featured argument lists. The &whole
keyword does not work in defmacro
argument lists (except
inside recursive argument lists).
In order to allow an efficient implementation, keyword arguments use
a slightly cheesy parser which may be confused if a keyword symbol
is passed as the value of another keyword argument.
(Specifically, (memq :keyword rest-of-arguments)
is used to scan for :keyword
among the supplied
keyword arguments.)
The eql
and equal
predicates do not distinguish
between IEEE floating-point plus and minus zero. The equalp
predicate has several differences with Common Lisp; see section Predicates.
The setf
mechanism is entirely compatible, except that
setf-methods return a list of five values rather than five
values directly. Also, the new “setf
function” concept
(typified by (defun (setf foo) …)
) is not implemented.
The do-all-symbols
form is the same as do-symbols
with no obarray argument. In Common Lisp, this form would
iterate over all symbols in all packages. Since Emacs obarrays
are not a first-class package mechanism, there is no way for
do-all-symbols
to locate any but the default obarray.
The loop
macro is complete except that loop-finish
and type specifiers are unimplemented.
Many Common Lisp declarations are ignored, and others match
the Common Lisp standard in concept but not in detail. For
example, local special
declarations, which are purely
advisory in Emacs Lisp, do not rigorously obey the scoping rules
set down in Steele’s book.
The variable *gensym-counter*
starts out with a pseudo-random
value rather than with zero. This is to cope with the fact that
generated symbols become interned when they are written to and
loaded back from a file.
The defstruct
facility is compatible, except that structures
are of type :type vector :named
by default rather than some
special, distinct type. Also, the :type
slot option is ignored.
The second argument of check-type
is treated differently.
[ << ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
This document was generated by Aidan Kehoe on December 27, 2016 using texi2html 1.82.