gpt4 book ai didi

function - 如何将变量传递给函数 lambda 表达式

转载 作者:行者123 更新时间:2023-12-02 01:24:11 25 4
gpt4 key购买 nike

假设您想要获取包中每个函数的 lambda 列表。在 SBCL 上,使用iterate你可以做到这一点

(use-package :iterate)

(defun lambda-lists (package)
(iter (for symbol in-package (find-package package))
(collect (sb-introspect:function-type symbol))))

为了更加便携,你可以尝试这样的事情

(defun lambda-lists (package)
(iter (for symbol in-package (find-package package))
(collect (function-lambda-expression symbol))))

但这行不通,因为 function-lambda-expression 采用的是函数,而不是符号。像 (function symbol) 这样的东西也不起作用,因为它创建了一个名为 symbol 的函数,而不是一个名为 symbol 的值的函数。

有没有办法用宏来实现这一点?

最佳答案

首先您需要找出哪个符号表示全局函数而不是宏或特殊形式。请参阅:FBOUNDP , MACRO-FUNCTION , SPECIAL-OPERATOR-P

然后您需要从符号中检索函数:使用 SYMBOL-FUNCTION .

关于function - 如何将变量传递给函数 lambda 表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75199868/

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