如何在Lisp中编写函数。编译该Lisp文件。然后运行该Lisp程序

时间:2019-04-19 06:47:08

标签: lisp

在Common Lisp中编写,编译和测试功能,该功能获取一个列表并计算列表中的正整数总数。必须编译然后执行包含该功能的.lisp文件。编译完该文件后,开始将其传递给列表,然后在该列表中列出要生成的结果,从而测试函数的正确性。

我有功能。我可以直接将它直接放入Lisp命令行中来运行它。简而言之,我只需要弄清楚如何编译该文件,然后在终端上通过它的列表以对其进行测试即可。

(count-if#'(lamda(x)(> x 0))

我需要编译 然后例如将其传递给这个ex ::(1 2 3 4 5) 结果应该是:: 5 这是因为它们是5个等于0的值

1 个答案:

答案 0 :(得分:1)

写入文件:

$ echo "(defun test () (print :test))" > test.lisp

在同一目录中,启动Common Lisp环境(例如CCL),您具有REPL;编译文件:

? (compile-file "test.lisp")
#P"/tmp/test.lx64fsl"
NIL
NIL

请注意,如果您尝试运行test函数,则会出现错误,因为您的环境中未定义该函数。

加载生成的目标文件;如果加载"test",则使用目标文件(如果可用);否则,使用目标文件。您本可以直接在“ .lisp”文件上调用load,但不能保证文件已编译或解释。这只是个小细节,您现在可能不应该在乎编译与否。

? (load "test")

现在,test在您的环境中可用,您可以将其称为:

? (test)

:TEST ;; what the function printed
:TEST ;; the returned value, automatically printed by the REPL

无需重新启动Lisp环境,就可以编辑文件并重新加载它。 这是一个简约的设置,但足以启动。