2012-04-01 2 views
-4

私はループといくつかの機能を持って、各反復は、それはそれは、「出口と保存」機能を呼び出してその関数に、それはいくつかのデータベースを保存し、その後、私はそれがプログラムを終了する必要が「0」に、入力を読み込みますか?その命令は何ですか?私がreturn-fromを使用すると、関数から返されます。返り値を使用すると、私はquitを使用してスライムから切り離します。私は... Common Lispの中で、私は、少なくともUbuntuのでSBCLを使用していない、(終了)を使用しているスライム切断を確認することはできませんまず共通のlispで完全なプログラムを終了する関数は何ですか?

+5

ははあなたが実行しているのLispシステム で 'quit'呼び出すときに起こるために何を期待していますスライム? – Svante

+0

あなたがしようとしていることの例を見るのに役立つかもしれません。おおまかに言えば、プログラムの設計に問題があるように聞こえます。プログラムの設計では、「終了を検出する」という状況に苦しんでいます。この「exit-and-save」機能はうまくいかないようです... – BRFennPocock

答えて

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

新たなんです。

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" 
関連する問題