标签: functional-programming elisp
为什么以下不起作用?
((if t + -) 1 1)
如何解析if表达式以提供正确的功能?我不想像(if t (+ 1 1) (- 1 1))那样重复自己。
if
(if t (+ 1 1) (- 1 1))
答案 0 :(得分:2)
Emacs Lisp是一个Lisp-2,意味着它有一个单独的函数命名空间。要在Emacs Lisp中将函数称为值,您需要引用它。要调用以这种方式引用的函数,您需要使用funcall。所以你想要的是:
funcall
(funcall (if t '+ '-) 1 1)