2

DrSchemeをR5RSで使用する場合、エラー関数はありません。自分で書くつもりですが、プログラムの実行を止める方法がわかりません。次のようなコマンドを試しました。

  • (停止)
  • (出口)
  • (エラー)

何も機能しませんでした。プログラムの実行をどのように停止しますか?

4

3 に答える 3

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

これにより 2 番目の (無関係な) エラーが発生しますが、プログラムの実行は確実に停止します。

于 2009-03-23T20:11:02.193 に答える
0

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

注: 私は DrScheme 372 を持っていますが、これはかなり古いものです。しかし、物事はあまり変わっていないはずです。

于 2009-03-23T22:24:37.317 に答える