我想要一个谓词作为函数的参数。

(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/

10-14 13:59