如何探索 Common Lisp 图像
How to explore a Common Lisp image
有没有办法探索 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.
上面的NUMBER
和COMMON-LISP
文字也是按钮,点击可以访问关联的值。如果你只使用 SBCL,同样可以通过调用 (find-class symbol nil)
(NIL 表示如果符号没有命名 class,则不应报告错误)、(symbol-plist symbol)
等来实现.
有些东西不能根据标准进行内省,比如结构体或用 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
这是一个图形化的网络浏览器:https://github.com/lokedhs/docbrowser
启动后,它会显示第一页,其中列出了当前映像中加载的所有可用包。点击一个包会显示它的函数和参数,以及它们的文档字符串,点击一个会显示它的源代码。
有没有办法探索 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.
上面的NUMBER
和COMMON-LISP
文字也是按钮,点击可以访问关联的值。如果你只使用 SBCL,同样可以通过调用 (find-class symbol nil)
(NIL 表示如果符号没有命名 class,则不应报告错误)、(symbol-plist symbol)
等来实现.
有些东西不能根据标准进行内省,比如结构体或用 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
这是一个图形化的网络浏览器:https://github.com/lokedhs/docbrowser
启动后,它会显示第一页,其中列出了当前映像中加载的所有可用包。点击一个包会显示它的函数和参数,以及它们的文档字符串,点击一个会显示它的源代码。