Is there a command to halt the interpreter in Common Lisp?

前端 未结 5 658
醉梦人生
醉梦人生 2021-02-12 09:57

I\'m looking for an expression that will cause the interpreter to exit when it is evaluated.

I\'ve found lots of implementation-specific ones but none in the HyperSpec,

相关标签:
5条回答
  • 2021-02-12 10:00

    As far as I know, this is not covered by the Spec, and you will have to use the implementation-specific solutions, or maybe try and look if someone has already written a trivial-quit lib (or start one on CLiki).

    If you only care about interactive use, ,q in SLIME will always do the right thing. Otherwise, you may use read-time conditionals like this:

    (defun my-quit ()
      #+sbcl (sb-ext:quit)
      #+clisp (ext:exit)
      #+ccl (ccl:quit)
      #+allegro (excl:exit)) ;; and so on ...
    

    #+ checks, if the following symbol is in *features*. If not, the following form will be treated as white-space. (There is also #- for the opposite).

    0 讨论(0)
  • 2021-02-12 10:00

    You can use (uiop:quit). This is included in most lisps.

    0 讨论(0)
  • 2021-02-12 10:15

    There is an ASDF library called shut-it-down that provides a quit function that works by just having cases for the common CL implementations.

    0 讨论(0)
  • 2021-02-12 10:18

    Since most Lisps import a quit function into CL-USER, CL-USER::QUIT is a good guess without knowing the implementation specific package where it is.

    (cl-user::quit)
    

    Note the two colons, since QUIT does not need to be exported from the CL-USER package.

    0 讨论(0)
  • 2021-02-12 10:25

    There is no standard way to exit a CL environment. To find out how to do it in the implementation you're using, read its documentation.

    In sbcl, (sb-ext:quit) will do the trick. For clisp, it's (ext:exit). The clisp documentation for the command is at http://clisp.sourceforge.net/impnotes.html#quit

    0 讨论(0)
提交回复
热议问题