佐々木です。

> 三浦です
>
> > そこは型推論を使用して、自動汎化された型が伝播し、伝播先で使用した
> > メソッドもキャップテーブルのメンバーとすれば良いのではないでしょうか?
>
> それも可能でしょうし、もっといえばプログラム中に現れるすべてのメソッドの
> 表を作ってしまえばいいかもしれません。
> 問題は、必要なメモリ量またはテーブルをつくる計算量です。
> テーブルを現実的な大きさと時間で作るのはやはり困難かと思います。

そうなんですか。しょせん人が手で書いた量のプログラム。
コンピュータならあっという間に処理できると思ったのですが。
型推論の伝播を調べるのなら十分可能と踏んだのですが・・・。

>
> > これは痛い。気づきませんでした。が、考えてみると・・・
> > 動的な条件のもと、varに代入されたものは自動汎化の対象とする、
> > と単純に考えるのでは駄目ですか・・・?
> > 逆に言えば、静的な条件のもとvarに代入されたX, Yにはそれぞれ
> > 静的に束縛できる訳で。コードをコンパイル時に実行したとして。
> >
> おそらく、静的な条件の条件分岐って条件コンパイルとかデバッグ目的とか
> 特殊な場合しかないと思います。そして、普通ちょっと気のきいたコンパイラなら
> 静的な条件の分岐は条件が無いものとしてコンパイルします。

ちょっと私の説明が悪かったです。三浦さんが言うに
「変数にどんな値が入りうるのか静的に確定させるのはそれなりに
困難」とのことですが、動的な条件(コンパイル時そうと分かるはず)のもとでのある 

変数への代入を列挙したもの(コードのある地点までに)が「変数にどんな値が入り
うるのか」になれると思います。ただしそれはコードの地点が違えば違った
ものになるので、確かに三浦さんが言うようにそれなりに困難かもしれません。

>
> > 私は専門家ではなく、無学な人間なので、この部分はよく理解できません
> > でした。このようにすると、静的束縛でかつ型指定のないダックタイピングが
> > できるのでしょうか?教えていただけたら幸いです。
> >
> 申し訳ありません。これは静的型付けの話ではなく、動的型付けでいかに速く
> 動くコードを得るかの話です。ChromeやFirefoxで動くJSのJITコンパイラでは
> この手のテクニックが使われているはずです。

そうでしたか。私も自作の言語を考えていて、言語仕様は考えるのですが実装の方
まで手が回らずそういったことには疎いのです。

では