Emacs Lisp和Common Lisp之间的主要区别是什么?

时间:2011-12-08 15:36:30

标签: emacs elisp common-lisp

我想学习lisp语言,因为我的编辑器是emacs,我更喜欢emacs lisp。

有人可以给我一些建议来学习lisp,emacs lisp或常见的lisp吗?

这两者之间有哪些主要区别?

2 个答案:

答案 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之间关系及其差异的一些信息: