Scheme和Elisp在功能评估上的差异

时间:2019-05-31 12:00:39

标签: emacs scheme lisp elisp

在学习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语言这一事实​​有关吗?

1 个答案:

答案 0 :(得分:4)

是的,该错误是由于Emacs Lisp是Lisp-2这一事实造成的。这应该起作用:

(funcall (if 1 '+ '-) 3 2)