有条件地选择要调用的函数

时间:2014-06-27 00:03:23

标签: functional-programming elisp

为什么以下不起作用?

((if t + -) 1 1)

如何解析if表达式以提供正确的功能?我不想像(if t (+ 1 1) (- 1 1))那样重复自己。

1 个答案:

答案 0 :(得分:2)

Emacs Lisp是一个Lisp-2,意味着它有一个单独的函数命名空间。要在Emacs Lisp中将函数称为值,您需要引用它。要调用以这种方式引用的函数,您需要使用funcall。所以你想要的是:

(funcall (if t '+ '-) 1 1)