2011-12-08 126 views
29

我想学习lisp语言,因为我的编辑器是emacs,所以我更喜欢emacs lisp。Emacs Lisp和Common Lisp之间的主要区别是什么?

谁能给我一些建议,学习口齿不清,的Emacs Lisp,或Common Lisp的?

这两者之间的主要区别是什么?

+0

从这里开始:HTTP ://en.wikipedia.org/wiki/Elisp它在底部有一些很好的链接。 – aartist

+0

如果你想学习emacs的Lisp - 学习Emacs Lisp。如果你想开发真正的应用程序,更好地学习Common Lisp甚至Clojure。 – alexurba

+1

相关:http://stackoverflow.com/questions/3840443/how-to-go-about-learning-common-lisp-and-emacs-lisp –

回答

26

有相当多的交叉,特别是在入门级的水平,所以无论你开始将主要转移到其他。

一些主要区别:

  • elisp的传统使用的动态范围的规则; Common Lisp使用词法范围规则。通过动态范围设定,函数可以访问在调用函数中声明的局部变量,并且通常不受欢迎。 Emacs有一个模拟词法范围的lexical-let表单,最近版本的emacs允许逐个功能地选择词法范围。

  • elisp的没有关闭,这使得合成功能和哗众取宠困难。有一个apply-partially函数,其功能类似于柯里化。请注意,Emacs 24中引入的lexical-let表单可以通过词汇范围界定产生闭包。

  • 多,已经建立起来的时候Common Lisp的库不提供elisp的。一个子集是由elisp的cl

  • 的elisp没有做尾调用优化提供。

+7

“普遍失宠”评论并不适用于Emacs本身,当然,动态范围是非常有用的。 – phils

+1

只需在此添加一点当前信息,Emacs 24在指定时会为Emacs Lisp添加词法绑定。 –

+3

现在Emacs Lisp具有词汇让和compat库被称为cl-lib而不是cl – PuercoPop

相关问题