我想要一个谓词作为函数的参数。
(DEFUN per (F L)
(cond ((F L) 'working)
(T 'anything)))
(per 'numberp 3)
因此,它会引发一个错误:
形式(F L)中未定义的运算符F。
最佳答案
如Technical Issues of Separation in Function Cells and Value Cells所述,
普通的口齿不清是口齿不清-2,也就是说,你
需要funcall
:
(defun per (F L)
(if (funcall F L)
'working
'other))
(per #'numberp 3)
==> WORKING
(per #'numberp "3")
==> OTHER
另请参见
apply
。关于function - LISP:以谓词为参数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43750424/