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