在Common Lisp中编写,编译和测试功能,该功能获取一个列表并计算列表中的正整数总数。必须编译然后执行包含该功能的.lisp文件。编译完该文件后,开始将其传递给列表,然后在该列表中列出要生成的结果,从而测试函数的正确性。
我有功能。我可以直接将它直接放入Lisp命令行中来运行它。简而言之,我只需要弄清楚如何编译该文件,然后在终端上通过它的列表以对其进行测试即可。
(count-if#'(lamda(x)(> x 0))
我需要编译 然后例如将其传递给这个ex ::(1 2 3 4 5) 结果应该是:: 5 这是因为它们是5个等于0的值
答案 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环境,就可以编辑文件并重新加载它。 这是一个简约的设置,但足以启动。