As a user of both Elisp and Common Lisp I sometimes have a hard time remembering the small differences. Many of these are “hidden” in the sense that identically named functions behave differently. One such example is that functions such as assoc
and member
behave differently because Elisp uses equal
as the predicate whereas eql
is used by default in CL.
Jisang Yoo has published a lengthy post on some of the differences between the two Lisps. It’s not encyclopedic but it does cover the most important differences and the ones that are apt to bite the unwary practitioner.
He also covers the cl-lib
package, which is the new CL compatibility library for Elisp. One nice touch is that he shows how to programmatically list all the cl-lib
functions with an indication of whether or not they have a built-in version.
Some differences are trivial, defconst
versus defconstant
for example, while others, like the difference in member
are subtle and hidden. Even if you’re experienced in both languages, you may find some differences you didn’t know about. This is a great post and well worth the time it takes to read it. You’ll also learn an interesting fact about the Korean language.