下記は、このパッケージとSteele(第2版)に文書化されたCommon Lispとの間の すべての既知の非互換のリストである。
memberやassoc、floorのようなある種の関数名は、
(非互換な)Emacs Lisp関数によってすでに取られていた; このパッケージは、
これらの関数のCommon Lisp版の名前に‘*’を付加する。
語defun*は、拡張されたCommon Lisp引数リストを関数で使うために、
defunの代わりに必要である。同様に、defmacro*と
function*は、これらのフォームの完全な機能の引数リストを理解する
版である。&wholeキーワードは、defmacro引数リストでは
(再帰的引数リストの中を例外として)動作しない。
効率的な実装を許すために、キーワード引数は、キーワードシンボルが他の
キーワード引数の値として渡された場合に混乱するかもしれない、
わずかに下等な構文解析器を使う(つまり、
(memq :keyword rest-of-arguments)が、与えられた
キーワード引数の中を:keywordを見つけようと走査するために
使われる)。
eqlとequal述語は、IEEE浮動小数点の正の0と負の0を
区別しない。equalp述語は、Common Lispといくつかの相違がある;
see 述語.
setfメカニズムは完全に互換だが、setf-methodは5つの値を
直接戻すのではなく、5つの値のリストを戻す点が異なる。また、
((defun (setf foo) …)が典型的であるような)新しい
“setf関数”の概念は実装されていない。
do-all-symbolsフォームは、obarray引数がない
do-symbolsと同じである。Common Lispでは、このフォームはすべての
パッケージ中のすべてのシンボルの上で繰り返す。Emacsのobarrayは、
ファーストクラスのパッケージメカニズムではないので、
do-all-symbolsが既定のobarray以外を確認する方法はない。
loopマクロは、loop-finishと型指定子が実装されていない
点を除いて完全である。
多値戻し機能はリストを多値として扱うが、それはEmacs Lispは多重戻り値を
直接サポートしないためである。valuesまたはvalues-listが、
multiple-value-bindや他の多値受け取り側へ戻るために常に使われる
場合、マクロはCommon Lispと互換だろう; valuesが
multiple-value-…なしで使われたり、
multiple-value-…がvaluesなしで使われたりする場合、
効果はCommon Lispとは異なるだろう。
多くのCommon Lisp宣言は無視され、その他は概念としてはCommon Lisp標準に
マッチするが、詳細はマッチしない。たとえば局所special宣言は、
Emacs Lispでは純粋に助言だが、Steeleの本に規定されたスコープ規則に
厳密には従わない。
変数*gensym-counter*は、0ではなく疑似乱数値で開始する。これは、
生成されたシンボルは、ファイルへ書かれ、ファイルからロードされたときに
internされるという事実をうまく処理できる。
defstruct機能は互換だが、構造体は、ある特殊な別の型ではなく、
既定では:type vector :namedの型である点が異なる。
また、:typeスロットオプションは無視される。
check-typeの第2引数は異なる扱いをされる。