This question already has answers here:
Closed 5 months ago.
What is the difference between Lisp-1 and 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