gpt4 book ai didi

functional-programming - Funcall 在 Common Lisp 中如何工作?

转载 作者:太空宇宙 更新时间:2023-11-03 19:00:55 24 4
gpt4 key购买 nike

我不明白 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)))))

最佳答案

此函数计算L字段 的总和。相当于

(reduce #'+ L :key field)

或者(更糟!永远不要这样做!)

(apply #'+ (mapcar field L))

这里的field是一个从L的元素中提取数值的函数; funcall Common Lisp 的神器是 Lisp-2 : (funcall field ...) 在 Scheme(或任何其他 Lisp-1)中看起来像 (field ...)

更具体地说; funcall接受它的第一个参数和 coerces它变成一个函数;然后它在所有其他参数上调用此函数。

关于functional-programming - Funcall 在 Common Lisp 中如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20152261/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com