gpt4 book ai didi

lisp - 普通口齿不清 : function A passes a function to B which passes it to C which invokes the function

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

下面的helloworld函数简单的输出了Hello, world

(defun helloworld ()
(format t "Hello, world"))

我创建了一个函数 Ahelloworld 传递给函数 B:

(defun A ()
(B #'helloworld))

函数 B 然后将函数传递给函数 C:

(defun B (fn)
(C #'fn))

函数 C 然后调用该函数(即,它调用 helloworld):

(defun C (fn)
(funcall fn))

当我运行程序时:

(A)

我收到此错误消息:

Error in FUNCTION [or a callee]: The function FN is undefined.

为什么?

我该如何解决?

最佳答案

(C #'fn)

这会寻找一个名为 fn 的函数,该函数由 defunlabelsflet 等创建。你有一个包含函数的变量,因此您应该将它转发到 C 而不是查找它的名称:

(defun B (fn)
(C fn))
; ^^ no #'

Live Demo

关于lisp - 普通口齿不清 : function A passes a function to B which passes it to C which invokes the function,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33173528/

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