I want to learn the lisp language, since my editor is emacs, I prefer emacs lisp.
Can anyone give me some suggestions to learn lisp, emacs lisp, or common lisp?
What are the major differences between those two?
There's quite a bit of crossover, especially at the beginner level, so whichever you start with will mostly transfer to the other.
Some of the major differences:
ELisp traditionally used dynamic scoping rules; Common Lisp uses lexical scoping rules. With dynamic scoping, a function can access local variables declared in calling functions and has generally fallen out of favor. Starting with Emacs 24, Emacs allows optional lexical scoping on a file-by-file basis (and all files in the core distribution are progressively being converted).
Dynamically scoped ELisp doesn't have closures, which makes composing functions and currying difficult. There's a apply-partially
function that works similarly to currying. Note that the lexical-let
form introduced in Emacs 24 makes it possible to produce closures via lexical scoping.
Much of the Common Lisp library that has been built up over time isn't available in elisp. A subset is provided by the elisp cl
package
elisp doesn't do tail-call optimization.