我正在寻找一个表达式,它将导致解释器在被评估时退出.
我发现了许多特定于实现的但没有在HyperSpec中,我想知道是否有任何我没有看到规范中定义的.我发现它(quit)被CLISP和SLIME (exit)都认可,并且只有CLISP才能识别,但是我找不到任何参考其中任何一个的文档.
Rai*_*wig 19
由于大多数Lisps将退出函数导入CL-USER,因此在不知道实现特定包的情况下,CL-USER :: QUIT是一个很好的猜测.
(cl-user::quit)
Run Code Online (Sandbox Code Playgroud)
请注意两个冒号,因为不需要从CL-USER包导出QUIT.
dan*_*lei 18
据我所知,这不是规范所涵盖的,您将不得不使用特定于实现的解决方案,或者尝试查看是否有人已经编写了一个简单的退出lib(或在CLiki上启动一个).
如果您只关心交互式使用,那么,qSLIME将始终做正确的事情.否则,您可以使用如下读取时间条件:
(defun my-quit ()
#+sbcl (sb-ext:quit)
#+clisp (ext:exit)
#+ccl (ccl:quit)
#+allegro (excl:exit)) ;; and so on ...
Run Code Online (Sandbox Code Playgroud)
#+检查,如果有以下符号*features*.如果不是,则以下表格将被视为空格.(也有#-相反的情况).
退出CL环境没有标准方法.要了解如何在您正在使用的实现中执行此操作,请阅读其文档.
在sbcl中,(sb-ext:quit)会做到这一点.对于clisp,它是(ext:exit).该命令的clisp文档位于http://clisp.sourceforge.net/impnotes.html#quit