调用作为参数传递的函数

时间:2016-03-04 03:51:41

标签: common-lisp

想要:如果传递函数或闭包,请调用它,否则返回输入。我试过这个:

{{1}}

获取"未定义的函数:X"。为什么呢?

1 个答案:

答案 0 :(得分:5)

if的其他部分不应该包含在parens中。当你在parens中放入一些东西时,它将被视为一个函数调用。要返回值,只需执行

(defun ifcall (x) (if (typep x 'FUNCTION) (funcall x) x))