2011-12-08 78 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

相關問題