[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

6.18 eval と repl

Function: eval expr env

[R5RS] exprを評価します。envは下に述べる手続きにより 返される値でなければなりません。現時点では、それは単なる <module>オブジェクトですが、Gaucheが将来、ファースト クラスの環境オブジェクトを採用する可能性はあります。

Function: null-environment version
Function: scheme-report-environment version
Function: interaction-environment

[R5RS] evalの第2引数として使われる環境識別子を返します。 現時点では、環境識別子は単にモジュールです。 (null-environment 5)は、R5RSで規定されている単なる構文的な 束縛を含むnullモジュールを返します。 (scheme-report-environment 5)は、R5RSで規定されている 構文的な束縛と手続きの束縛を含むschemeモジュールを返します。 (interaction-environment)は、全てのGaucheのビルトインと ユーザ定義の全てを含んだuserモジュールを返します。 将来、Gaucheがファーストクラスの環境オブジェクトを採用する可能性が あるので、環境識別子が単なるモジュールであることを当てにしないで 下さい。

引数versionに5以外の値を渡すとエラーが通知されます。

Function: read-eval-print-loop &optional reader evaluator printer prompter

goshのデフォルトのread-eval-printループをアプリケーションに エクスポートします。それぞれの引数は、Gaucheのデフォルトの手続きを使うことを 示す#fであっても良いですし、以下の条件を満たす手続きであっても構いません。

reader

引数を取らない手続きです。式を読み込んでそれを返すことを期待されます。

evaluator

式と環境識別子を2引数として取る手続きです。式を評価して、0個以上の値を 返すことを期待されます。

printer

0個以上の引数を取る手続きです。それらの値を出力することを期待されます。 この手続きの戻り値は無視されます。

prompter

引数を取らない手続きです。プロンプトを出力することを期待されます。 この手続きの戻り値は無視されます。

これらの手続きが与えられると、read-eval-print-loopは以下のように 動作します。

  1. prompterを呼んでプロンプトを出力します。
  2. readerを呼んで式を読み込みます。EOFが返されたら、ループを終了し read-eval-print-loopから戻ります。
  3. evaluatorを呼んで式を評価します。
  4. printerを呼んで結果を出力し、その後、1から繰り返します。

これらの手続きのうちの1つからエラーが通知されると、そのエラーは デフォルトのエスケープハンドラにより捕捉・報告され、その後、 ループが1から再開します。

これらの手続きの内部で継続を捕捉し、後で再起動することは 許されています。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]

This document was generated by Shiro Kawai on November, 22 2009 using texi2html 1.78.