在常见的lisp中退出完整程序的功能是什么?

时间:2012-04-01 19:52:31

标签: common-lisp

我有一些循环函数,每次迭代它读取输入,在“0”它调用函数“退出并保存”,在该函数中它保存一些数据库,之后我需要它退出程序?这个命令是什么?如果我使用return-from ...它只是从函数返回,如果我使用return - error,如果我使用quit,它会与slime断开连接。我是常见的新手......

2 个答案:

答案 0 :(得分:0)

(loop for i from 0 to 10
    do (progn (format t "~&cycle ~d" i)
          (when (> i 5)
            (return nil))))

答案 1 :(得分:0)

首先,我无法验证slime是否断开使用(退出),至少在Ubuntu上没有使用sbcl。

CL-USER> (quit)
; Evaluation aborted on NIL.
CL-USER> 
"still able to input here"

但如果你有一些奇怪的粘液版本,你可以利用条件系统:

(define-condition end-program-condition (simple-error) ())

(defun some-func ()
       (error 'end-program-condition))

(defun main-function ()
  (handler-case (some-func)
     (end-program-condition () "THE END")))


CL-USER> (main-function)
"THE END"
CL-USER> "still can input here"
"still can input here"