DrSchemeをR5RSで使用する場合、エラー関数はありません。自分で書くつもりですが、プログラムの実行を止める方法がわかりません。次のようなコマンドを試しました。
- (停止)
- (出口)
- (エラー)
何も機能しませんでした。プログラムの実行をどのように停止しますか?
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 番目の (無関係な) エラーが発生しますが、プログラムの実行は確実に停止します。
R5RS を使用する必要がある理由はありますか? DrScheme の他の言語定義は、 および を定義しerror
ますexit
。たとえば、(module ...)
PLT 言語ではerror
とが定義されてexit
います。mzscheme
コマンド ラインから呼び出すと、これらの定義も得られます。
注: 私は DrScheme 372 を持っていますが、これはかなり古いものです。しかし、物事はあまり変わっていないはずです。