我是LISP的新手。我正在使用Allegro-CL。我很难调用我定义和加载的函数。我想知道什么方法可以浏览我定义的内容,例如在某个软件包中列出所有方法,或仅列出变量或列表包名称等。

有帮助吗?

解决方案

我不使用Allegro CL,因此我只能告诉您CL本身为此提供的工具。您可能需要检查Allegro CLIDE为此任务提供的服务。

您可以获取所有包含功能列表的包装列表。您可以这样使用它来打印他们的名字:

(dolist (p (list-all-packages)) (write-line (package-name p)))

CL软件包是符号(即名称)的集合,而不是与这些名称关联的对象。您必须进一步查询它们中的名称,以查看是否有一个为该符号定义的值和/或函数。您可以使用 DO符号 循环浏览包装中的所有符号。这将在当前软件包中打印所有符号:

(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)))

其他提示

如果您记得名称的一部分,则可以随时使用Apropos(可能限于特定软件包)来找到全名。

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

要解决此问题,我始终输入编辑窗口(如果不存在,则CTRL+N)。这样,我可以非常方便地键入定义,编辑它们等。如果我需要评估定义,请按CTRL+E进行增量评估(请参阅工具菜单中的其他选项)。我将侦听器窗口放在左侧,右侧的编辑窗口查看输入和输出。

仍然存在一个小问题,甚至可能导致一些错误:如果您在更改它后忘记评估定义,那么旧的旧遗物仍保留在卧室中。继续按CTRL+e。

如果您打开了几个文件并想在一个源文件中找到一个定义,则可以使用搜索> apropos。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top