gpt4 book ai didi

emacs - 如何探索 Common Lisp 图像

转载 作者:行者123 更新时间:2023-12-04 12:04:42 26 4
gpt4 key购买 nike

有没有办法探索 Common Lisp 图像的当前状态(即加载的包、可用的符号等)?
我知道命令 (apropos "foo") ,但我想查看整个图像的当前状态。
有这样的探险家吗?我正在使用 SBCL 和 SLIME(在 Emacs 中)。

最佳答案

您可以使用以下命令列出所有现有包:

(list-all-packages)
对于给定的包,您可以迭代其所有符号或其外部符号:
(do-symbols (sym package)
...)

(do-external-symbols (sym package)
...)
您也可以直接列出所有包中的所有符号:
(do-all-symbols (sym)
...)
使用 Slime 时,使用 slime-inspect 检查符号给出以该符号命名的所有事物的摘要;例如,如果我检查 'number ,显示如下:
#<SYMBOL {5024C0CF}>
--------------------
Its name is: "NUMBER"
It is unbound.
It has no function value.
It is external to the package: COMMON-LISP [unintern]
Property list: NIL
It names the class NUMBER [remove]
It names a primitive type-specifier.
NUMBERCOMMON-LISP上面的文字也是按钮,可以点击访问关联值。如果您只使用 SBCL,同样可以通过调用 (find-class symbol nil) 来实现。 (NIL 表示如果符号未命名类,则不应报告错误), (symbol-plist symbol) , 等等。
根据标准,有些东西是无法自省(introspection)的,例如结构体或由 deftype 引入的所有用户定义类型的列表。 (也许其他事情)。根据您想要做什么,您可能需要查看执行此操作的特定于实现的方法。

感谢 David Hodge 指出以下几点:

A package called repl-utilities from Rob Warnock has a neat function called summary which shows each function, global variable with associated docstrings

关于emacs - 如何探索 Common Lisp 图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68220985/

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