早瀬です。


> val の右辺は x のスコープに入ってないからですね。SML の構文はよく覚え
> てないんですが、再帰的なものを定義する構文だとどうでしょうか。rec をつ
> けるんだっけか?

すみません、SMLをちゃんと勉強していない上に、本を友人に貸してしまっている
ので調べられません。

> elisp が動的スコープであることには同意しますが、SML/NJ もそうといわれ
> ると首をかしげざるを得ません。ここでいう動的スコープってなんですか?

思い切り勘違いしてしまいました。恥ずかしい…。

<言い訳>
対話実行のトップレベルだと、変数定義と式評価を混ぜる事ができ、エラーがあっ
ても実行を続けられるため、たとえば、

0:
1: val x=y; 
2: x;

を実行した場合、0の時点でyが定義されていないときは1がエラーとなり、2のxは
使えなくなります。これを動的スコープと勘違いしてしまいました。大馬鹿です。
</言い訳>


> C はたしか変数宣言で変数名が現れた箇所の後ならどこでも名前を使って良かっ
> たような気がします。少なくとも sizeof とか & とかは。

参考になります。

OCamlとHaskelは触ったことがないので、時間を作って勉強してみます。

-- 
早瀬 康裕
大阪大学基礎工学部情報科学科数理科学コース