R5RSのevalは、第二引数に「環境指定子(environment specifier)」を 取ると定義されている。 (eval form environment-specifier) しかし、環境指定子の具体的な実装は処理系に任されている。 処理系によっては、レキシカルスコープを含めた環境を ファーストクラスオブジェクトとして取り出せるものがあるから、 そういう処理系独自の拡張を念頭に置いた仕様だろう。 Gaucheでも将来はそういう拡張をするかもしれないが、 現在のところは、単なるモジュールを環境指定子として使っている。 モジュールはトップレベルの名前空間を規定するものだ。 evalは、form内の自由変数を、第二引数に渡されたモジュール内で 解決する。 ;; デフォルトではプログラムはuserモジュールで実行される。 ;; R5RSのinteraction-environmentは
![Gauche:evalと環境](https://cdn-ak-scissors.b.st-hatena.com/image/square/53a987f8da95ff3323da15345495ff0ac5db3cf3/height=288;version=1;width=512/https%3A%2F%2Fpractical-scheme.net%2Fwiliki%2Fthumbnail-placeholder.png)