是否有命令停止Common Lisp中的解释器?

时间:2010-12-13 02:35:21

标签: lisp common-lisp

我正在寻找一个表达式,它会导致解释器在被评估时退出。

我在HyperSpec中发现了许多特定于实现的但没有的,我想知道是否有任何我没有在规范中定义的内容。我发现CLISP和SLIME都识别(quit)(exit)只能被CLISP识别,但我找不到任何引用其中任何一个的文档。

5 个答案:

答案 0 :(得分:18)

据我所知,这不属于规范,您必须使用特定于实现的解决方案,或者尝试查看某人是否已经编写了一个简单的退出lib(或者在{ {3}})。

如果您只关心交互式使用,SLIME中的,q将始终做正确的事情。否则,您可以使用如下读取时间条件:

(defun my-quit ()
  #+sbcl (sb-ext:quit)
  #+clisp (ext:exit)
  #+ccl (ccl:quit)
  #+allegro (excl:exit)) ;; and so on ...
如果以下符号位于*features*,则

CLiki检查。如果不是,则以下表格将被视为空格。 (对面也有#+。)

答案 1 :(得分:16)

由于大多数Lisps将退出函数导入CL-USER,因此在不知道实现特定包的情况下,CL-USER :: QUIT是一个很好的猜测。

(cl-user::quit)

请注意两个冒号,因为不需要从CL-USER包导出QUIT。

答案 2 :(得分:6)

退出CL环境没有标准方法。要了解如何在您正在使用的实现中执行此操作,请阅读其文档。

在sbcl中,(sb-ext:quit)可以解决问题。对于clisp,它是(ext:exit)。该命令的clisp文档位于http://clisp.sourceforge.net/impnotes.html#quit

答案 3 :(得分:1)

您可以使用(uiop:quit)。这在大多数lisps中都包含在内。

答案 4 :(得分:0)

有一个Capacitor Filesharer提供了一个quit函数,该函数仅具有通用CL实现的条件。