【发布时间】:2011-01-24 17:58:10
【问题描述】:
我对 LISP 很陌生。我正在使用 allegro-cl。我很难调用我定义和加载的函数。我想知道有哪些方法可以浏览我定义的内容,例如列出某个包中的所有方法,或仅列出变量,或列出包名称等。
【问题讨论】:
标签: lisp development-environment allegro-cl
我对 LISP 很陌生。我正在使用 allegro-cl。我很难调用我定义和加载的函数。我想知道有哪些方法可以浏览我定义的内容,例如列出某个包中的所有方法,或仅列出变量,或列出包名称等。
【问题讨论】:
标签: lisp development-environment allegro-cl
我没有使用 Allegro CL,所以我只能告诉你 CL 本身为此提供的工具。您可能想检查 Allegro CL IDE 为这项任务提供了什么。
您可以使用函数 LIST-ALL-PACKAGES 获取所有包的列表。你可以像这样使用它来打印他们的名字:
(dolist (p (list-all-packages)) (write-line (package-name p)))
CL 包是符号(即名称)的集合,而不是与这些名称关联的对象。您必须进一步查询其中的名称,以查看是否为该符号定义了值和/或函数。您可以使用DO-SYMBOLS 来遍历包中的所有符号。这将打印当前包中的所有符号:
(do-symbols (s) (print s)
这只是功能:
(do-symbols (s) (when (fboundp s) (print s)))
这仅是其主包是当前包的函数:
(do-symbols (s)
(when (and (eq (symbol-package s) *package*)
(fboundp s))
(print s)))
【讨论】:
excl:find-source-file 函数。
如果你记住了部分名称,你可以随时使用 APROPOS(可能仅限于特定的包)来查找全名。
【讨论】:
我遇到了同样的问题。阅读文档后,我认为无法回忆输入到 REPL 中的定义。
为了解决这个问题,我总是在编辑器窗口中输入(Ctrl+N 如果不存在)。这样我就可以很方便地键入定义、编辑它们等。如果我需要评估定义,我按 Ctrl+E 进行增量评估(请参阅“工具”菜单中的其他选项)。我在左侧保留一个侦听器窗口,在右侧保留一个编辑器窗口以查看输入和输出。
还有一个小问题甚至会导致一些错误:如果您在对定义进行更改后忘记评估它,旧的定义仍保留在 REPL 中。按住 Ctrl+E。
如果您打开了多个文件并希望在其中一个源文件中找到定义,您可以使用 Search>Apropos。
【讨论】: