[R7RS eval]
exprを環境env内で評価します。
Gaucheにおいて、envは単なる<module>
オブジェクトです。
R5RSとR7RSは、環境envを得るポータブルな方法を定義しています。
R5RSの方法を以下に示します。R7RSの方法はscheme.eval
- R7RS evalを参照してください。
[R5RS]
eval
の第2引数として使われる環境識別子を返します。
現時点では、環境識別子は単にモジュールです。
(null-environment 5)
は、R5RSで規定されている単なる構文的な
束縛を含むnull
モジュールを返します。
(scheme-report-environment 5)
は、R5RSで規定されている
構文的な束縛と手続きの束縛を含むscheme
モジュールを返します。
(interaction-environment)
は、全てのGaucheのビルトインと
ユーザ定義の全てを含んだuser
モジュールを返します。
将来、Gaucheがファーストクラスの環境オブジェクトを採用する可能性が
あるので、環境識別子が単なるモジュールであることを当てにしないで
下さい。
引数versionに5以外の値を渡すとエラーが通知されます。
gosh
のデフォルトのread-eval-printループをアプリケーションに
エクスポートします。それぞれの引数は、Gaucheのデフォルトの手続きを使うことを
示す#f
であっても良いですし、以下の条件を満たす手続きであっても構いません。
引数を取らない手続きです。式を読み込んでそれを返すことを期待されます。
式と環境識別子を2引数として取る手続きです。式を評価して、0個以上の値を 返すことを期待されます。
0個以上の引数を取る手続きです。それらの値を出力することを期待されます。 この手続きの戻り値は無視されます。
引数を取らない手続きです。プロンプトを出力することを期待されます。 この手続きの戻り値は無視されます。
これらの手続きが与えられると、read-eval-print-loop
は以下のように
動作します。
read-eval-print-loop
から戻ります。
これらの手続きのうちの1つからエラーが通知されると、そのエラーは デフォルトのエスケープハンドラにより捕捉・報告され、その後、 ループが1から再開します。
これらの手続きの内部で継続を捕捉し、後で再起動することは 許されています。
註: gauche.interactive
ではREPLでの行編集をサポートする
read-eval-print-loop
手続きを定義しています。
gauche.interactive
をインポートした場合、Gaucheの元の
read-eval-print-loop
がシャドウされるかもしれないことに注意してください。
gauche.interactive
のread-eval-print-loop
は
同じインタフェースを持ちますが、ユーザが提供するreaderは無視されます。