Bal*_*nan 15 lisp debugging common-lisp
我正在评估/测试基于浏览器的应用程序,可能是用普通的lisp编写的.除了基于浏览器的界面外,该软件还提供了一个"监听器"窗口,其中包含"CL-User>"REPL提示符.
我希望从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 packageRun Code Online (Sandbox Code Playgroud)
这条线(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)Run Code Online (Sandbox Code Playgroud)
(apropos-list) 返回名称中包含您传入的字符串的所有符号,并使用可选包进行搜索.
至于找出所有这些符号的作用,那么试试这个:http://www.psg.com/~dlamkins/sl/chapter10.html
列出所有内容:
(apropos "")
Run Code Online (Sandbox Code Playgroud)
要列出特定包中的所有内容,请添加'project-name:
(apropos "" 'quickproject)
Run Code Online (Sandbox Code Playgroud)
列出所有包(duh):
(list-all-packages)
Run Code Online (Sandbox Code Playgroud)
要查找从特定包导出的函数:
(loop for x being the external-symbol of "CL" when (fboundp x) collect x)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5003 次 |
| 最近记录: |