我不明白在这个例子中funcall会做什么。我需要一个关于代码何时执行的解释。
(defun total-value (field L)
"Answer average value of fields of complex entries in list L"
(if (null L)
0
(+ (funcall field (first L))
(total-value field (rest L)))))发布于 2013-11-24 13:08:24
此函数用于计算L中的field的和。它等同于
(reduce #'+ L :key field)或者(更糟!永远不要这样做!)
(apply #'+ (mapcar field L))这里,field是从L的元素中提取数值的函数;funcall是Common Lisp为Lisp-2的产物: Scheme (或任何其他Lisp-1)中的(funcall field ...)看起来像(field ...)。
更具体地说,funcall接受第一个参数并将其coerces到一个函数中;然后在所有其他参数上调用该函数。
https://stackoverflow.com/questions/20152261
复制相似问题