Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
例如,我想定义一个这样的函数:
(defun operation (op) (op 3 7))
但是 lisp 编译器抱怨这样的代码:(operation +)
(operation +)
有没有办法将算术运算符作为函数参数传递?
Lisp 方言有两类:Lisp-1 和 Lisp-2。Lisp-1 意味着函数和变量共享一个命名空间。Scheme 是一个 Lisp-1。Lisp-2 意味着函数和变量有不同的命名空间。Common Lisp 是一个 Lisp-2。如果要将一个名为a参数的函数传递给另一个函数,则必须将其称为#'a. 如果您将函数存储在变量中,则可以使用该apply函数来执行它。如果这样重写,您的代码应该可以工作:
a
#'a
apply
(defun operation (op) (apply op '(3 7))) (operation #'+)