2009-03-23 3 views
2

R5RSでDrSchemeを使用する場合、エラー機能はありません。私は自分自身を書くつもりですが、プログラムの実行を止める方法を理解することはできません。私は、次のようなコマンドを試みた:DrSchemeのR5RS実装ではどのように停止しますか?

  • (HALT)
  • (出口)
  • (エラー)

およびどれも働きました。プログラムの実行をどのように停止しますか?

答えて

2

SLIB(移植可能なSchemeライブラリ)の実装はERRORです。それを見たり、プログラムでSLIBを使用したりすることもできます。

これ以外にも、プログラムを停止する方法の1つは、単に別のエラーを発生させることです。 (Stephen Houbenのおかげで)このような何かを試してみてください:

(define (error reason . args) 
     (display "Error: ") 
     (display reason) 
     (for-each (lambda (arg) 
        (display " ") 
      (write arg)) 
     args) 
     (newline) 
     (scheme-report-environment -1)) ;; we hope that this will signal an error 

をこの第二(無関係な)エラーを発生しますが、それは確かにプログラムの実行を停止します。

0

R5RSを使用する理由はありますか? DrSchemeの他の言語定義では、errorexitが定義されています。たとえば、(module ...) PLT言語では、errorexitが定義されています。コマンドラインからmzschemeを呼び出すと、これらの定義も得られます。

注:DrScheme 372はかなり古いです。しかし、物事はあまり変わってはいけません。

+0

AFAIK、彼は彼自身のインタプリタを実装しています。彼は彼がR5RSを使っています。 –

+0

@Nathan - はい。私はすでにR5RSを使用しています。「言語を変更する」は、2つの短所と利点を持つ2つの言語を使用するまで機能します。最終的にはどちらかを選択する必要があります。 @セバスチャン - 真。 – Kai

+0

おっと、これは初心者の質問だったと思っていました。 –

0

醜い解決策は、実行時エラーになるように中止を定義することです。例えば は、これらのいずれかがトリック (define abort "the program was aborted") (define abort 123) (define abort #f) あなたの幸運にも、文字列、エラーコードまたは何でもあなたが気を示す場合 (abort) は、ランタイムエラーを生成する必要があります中止する任意の呼び出しを行う必要があります。

関連する問題