[351] Re:プログラミング言語を作る
投稿者:mizu
2007/02/20 02:13:25
>まず前提として、
>
>・クロージャはそれ自体が式なので、クロージャの中にも書けるはず。
> よって、クロージャはネスト可能。
>・ということは、内側のクロージャは、外側のクロージャの環境と、
> さらにその外側(普通の関数)の両方の環境が見えなければならない。
>
>というのがあって、mizuさんの案だと配列をひとつしか渡していないので、
>いいのかな、と思ったわけです。
すいません。説明不足でした。前の例で配列を1つしかクロージャに渡して
いないのは、あの例ではクロージャがネストしていないため、そうなっている
だけで、クロージャのネストが増えるごとに、クロージャに渡される配列の数
は1つずつ増えて行く仕組みになっています。つまり、クロージャがn段ネスト
した場合、n個の配列がクロージャに渡されることになります。
> 再帰がなければ静的にインデックス計算することも可能でしょうが、
>再帰を許すと、インデックスが動的に変化することになりませんか、
>というのが先の投稿の意図です。
># 私はクロージャ初心者なので何か勘違いしている可能性はありますが…
クロージャのネスト段数は静的に決定され、かつ、クロージャから
参照されている変数がどのクロージャ(関数)のものであるかは、静的に決定
可能なので、再帰の有無に関わらず、(クロージャから参照される)変数の
インデックスは静的に計算できるはずだと思うのですが…。何か勘違いしている
のかもしれませんので、もう少し考えてみます。