This question already has answers here:
Closed 5 months ago.
What is the difference between Lisp-1 and Lisp-2?
(2个答案)
在研究elisp的过程中,我尝试了一些我知道在Scheme中有效的方法,并惊奇地发现我无法在elisp中复制它。
我希望Elisp行的计算结果是
对这个名单的评估结果是5但是我得到:
我错过了什么Elisp不允许这样的行为吗这可能与scheme是lisp-1语言和elisp是lisp-2有关吗?
(2个答案)
在研究elisp的过程中,我尝试了一些我知道在Scheme中有效的方法,并惊奇地发现我无法在elisp中复制它。
;; works in Scheme. result: 5
((if 1 + -) 3 2)
;; doesn't work in Elisp. result: error
((if 1 '+ '-) 3 2)
我希望Elisp行的计算结果是
(+ 3 2)
对这个名单的评估结果是5但是我得到:
(invalid-function (if t '+ '-))
我错过了什么Elisp不允许这样的行为吗这可能与scheme是lisp-1语言和elisp是lisp-2有关吗?
最佳答案
是的,错误是因为Emacs Lisp是Lisp-2这应该有效:
(funcall (if 1 '+ '-) 3 2)
10-06 10:43