use*_*032 41 emacs elisp common-lisp
我想学习lisp语言,因为我的编辑器是emacs,我更喜欢emacs lisp.
任何人都可以给我一些建议来学习lisp,emacs lisp或常见的lisp吗?
这两者之间的主要区别是什么?
ata*_*lor 35
有相当多的交叉,特别是在初学者水平,所以无论你开始哪个将主要转移到另一个.
一些主要差异:
elisp传统上使用动态范围规则; Common Lisp使用词法范围规则.使用动态作用域,函数可以访问在调用函数中声明的局部变量,并且通常不受欢迎.Emacs有一个lexical-let模拟词法作用域的表单,而emacs的最新版本允许逐个函数的可选词法作用域.
elisp没有闭包,这使得编写功能和currying很困难.有一个apply-partially功能与currying类似.请注意,lexical-letEmacs 24中引入的表单可以通过词法作用域生成闭包.
很多随着时间的推移而构建的Common Lisp库在elisp中不可用.elisp cl包提供了一个子集
elisp不进行尾调用优化.
这些Emacs-Wiki页面提供有关两个Lisps之间的关系及其差异的一些信息: