如何使用一个lisp文件中的函数来解决另一个lisp文件中的某些内容?

时间:2016-10-16 06:19:25

标签: function emacs common-lisp

我是lisp的新手,我的教授给了一些.lisp文件。

http://pastebin.com/eDPUmTa1(搜索功能)

http://pastebin.com/xuxgeeaM(水壶问题保存为waterjug.lisp)

问题是我不知道如何从一个文件中实现运行函数来解决另一个文件的问题。我做的最多的是从一个文件编译的函数,并在终端中使用它。我不知道如何在此IDE中加载2个文件以及如何运行该函数。例如,我正在尝试运行广度优先搜索功能来解决问题无济于事。

我目前正在使用emacs作为文本编辑器SBCL作为常见的lisp实现以及quicklisp和slime。

1 个答案:

答案 0 :(得分:2)

假设每个文件都在自己的缓冲区中,比如f1.lispf2.lisp,那么只需在每个缓冲区中调用slime-compile-and-load-file。这默认绑定到 C-c C-k 。您必须先编译第一个文件,因为它包含第二个文件的定义。

但是,您的第二个文件(f2.lisp)有两个问题:搜索(break(bread并删除这些字符串。检查它们周围的表格是否平衡了它们的括号。

在编译文件时注意警告消息和错误。 然后,如果要直接从缓冲区计算某些内容,请将光标(点)放在要评估的表单之后,然后键入 Cx Ce (假设光标由{{1}表示下面):

%

这将在迷你缓冲区中打印结果,例如(dump-5 (start-state *water-jug*))% ,表示#<JUG-STATE {1004B61A63}>类的实例。如果函数将某些内容写入标准输出,则保持向REPL缓冲区打开一个窗口(下面是JUG-STATE表达式的情况)。

如果您执行 C-c I ,这将询问您要检查哪个表达式,已经填充了该点之前的表单。按输入时,检查器缓冲区将显示:

(describe ...)

阅读http://www.cliki.net/slime-howto