作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
假设您想要获取包中每个函数的 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/
我是一名优秀的程序员,十分优秀!