浏览LISP中的定义

时间:2011-01-24 17:58:10

标签: lisp development-environment allegro-cl

我对LISP很新。我正在使用allegro-cl。我在调用已定义和加载的函数时遇到困难。我想知道有什么方法可以浏览我定义的内容,例如列出某个包中的所有方法,或列出变量,列出包名等等。

3 个答案:

答案 0 :(得分:4)

我没有使用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)))

答案 1 :(得分:3)

如果您还记得名称的一部分,您可以随时使用APROPOS(可能仅限于特定包)来查找全名。

答案 2 :(得分:0)

我遇到了同样的问题。阅读文档后,我认为没有办法回忆输入REPL的定义。

要解决此问题,我总是输入编辑器窗口(如果不存在,则按Ctrl + N)。通过这种方式,我可以非常方便地键入定义,编辑它们等。如果我需要评估定义,请按Ctrl + E进行增量评估(请参阅“工具”菜单中的其他选项)。我在左边有一个监听器窗口,在右边有一个编辑器窗口,用于查看输入和输出。

还有一个小问题甚至可能导致一些错误:如果你在对它进行了更改后忘记评估定义,那么旧的定义仍然存在于REPL中。按住Ctrl + E。

如果您打开了多个文件并希望在其中一个源文件中找到定义,则可以使用搜索> Apropos。

相关问题