gpt4 book ai didi

debugging - 如何从 Common Lisp REPL 提示中检查已定义函数的列表

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

我正在评估/测试一个基于浏览器的应用程序,大概是用普通的 lisp 编写的。除了基于浏览器的界面外,该软件还提供了一个带有“CL-User >”REPL 提示的“Listener”窗口。

我想在 REPL 提示符下检查函数、符号和包的列表。这样我就可以将前端功能与通过 REPL 公开的内容相关联。

谷歌搜索对我来说是徒劳的,因为它会找到逐步教授 lisp 的教程和资源。

任何关于通过 REPL 检查状态的提示和指示将不胜感激。

最佳答案

如果您不知道要查找的符号,但知道要搜索的包,则可以通过仅列出这些特定包中的符号来大大减少必须执行的搜索量:

(defun get-all-symbols (&optional package)
(let ((lst ())
(package (find-package package)))
(do-all-symbols (s lst)
(when (fboundp s)
(if package
(when (eql (symbol-package s) package)
(push s lst))
(push s lst))))
lst))

(get-all-symbols 'sb-thread) ; returns all the symbols in the SB-THREAD package

(get-all-symbols 'sb-thread) 行就是这样做的。

如果您知道要查找的符号类型,并想猜猜它们的名字,您可以这样做

(apropos-list "mapc-") ; returns (SB-KERNEL:MAPC-MEMBER-TYPE-MEMBERS SB-PROFILE::MAPC-ON-NAMED-FUNS)
(apropos-list "map" 'cl) ; returns (MAP MAP-INTO MAPC MAPCAN MAPCAR MAPCON MAPHASH MAPL MAPLIST)

(apropos-list) 返回名称中包含您传入的字符串的所有符号,并带一个可选包进行搜索。

就弄清楚所有这些符号的作用而言,试试这个:http://www.psg.com/~dlamkins/sl/chapter10.html

关于debugging - 如何从 Common Lisp REPL 提示中检查已定义函数的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1511981/

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