Idiosyncrasies

Declarations are generally treated as assertions. This general principle, and its implications, and the bugs which still keep the compiler from quite satisfying this principle, are discussed in the chapter on the compiler.

SBCL is essentially a compiler-only implementation of Common Lisp. That is, for all but a few special cases, eval creates a lambda expression, calls compile on the lambda expression to create a compiled function, and then calls funcall on the resulting function object. This is explicitly allowed by the ANSI standard, but leads to some oddities, e.g. collapsing functionp and compiled-function-p into the same predicate.