[#48770] Re: Rubyで静的型 — "Toshiyuki Sasaki" <tsasaki1@...>
> この場合、この例では簡単かもしれませんが、たとえばvarが別のメソッド
10 messages
2014/12/23
[#48771] Re: Rubyで静的型
— Hideki Miura <m-72@...6.so-net.ne.jp>
2014/12/23
三浦です
[ruby-dev:48773] Re: Rubyで静的型
From:
"Toshiyuki Sasaki" <tsasaki1@...>
Date:
2014-12-23 07:01:39 UTC
List:
ruby-dev #48773
佐々木です。 > 三浦です > > > そこは型推論を使用して、自動汎化された型が伝播し、伝播先で使用した > > メソッドもキャップテーブルのメンバーとすれば良いのではないでしょうか? > > それも可能でしょうし、もっといえばプログラム中に現れるすべてのメソッドの > 表を作ってしまえばいいかもしれません。 > 問題は、必要なメモリ量またはテーブルをつくる計算量です。 > テーブルを現実的な大きさと時間で作るのはやはり困難かと思います。 そうなんですか。しょせん人が手で書いた量のプログラム。 コンピュータならあっという間に処理できると思ったのですが。 型推論の伝播を調べるのなら十分可能と踏んだのですが・・・。 > > > これは痛い。気づきませんでした。が、考えてみると・・・ > > 動的な条件のもと、varに代入されたものは自動汎化の対象とする、 > > と単純に考えるのでは駄目ですか・・・? > > 逆に言えば、静的な条件のもとvarに代入されたX, Yにはそれぞれ > > 静的に束縛できる訳で。コードをコンパイル時に実行したとして。 > > > おそらく、静的な条件の条件分岐って条件コンパイルとかデバッグ目的とか > 特殊な場合しかないと思います。そして、普通ちょっと気のきいたコンパイラなら > 静的な条件の分岐は条件が無いものとしてコンパイルします。 ちょっと私の説明が悪かったです。三浦さんが言うに 「変数にどんな値が入りうるのか静的に確定させるのはそれなりに 困難」とのことですが、動的な条件(コンパイル時そうと分かるはず)のもとでのある 変数への代入を列挙したもの(コードのある地点までに)が「変数にどんな値が入り うるのか」になれると思います。ただしそれはコードの地点が違えば違った ものになるので、確かに三浦さんが言うようにそれなりに困難かもしれません。 > > > 私は専門家ではなく、無学な人間なので、この部分はよく理解できません > > でした。このようにすると、静的束縛でかつ型指定のないダックタイピングが > > できるのでしょうか?教えていただけたら幸いです。 > > > 申し訳ありません。これは静的型付けの話ではなく、動的型付けでいかに速く > 動くコードを得るかの話です。ChromeやFirefoxで動くJSのJITコンパイラでは > この手のテクニックが使われているはずです。 そうでしたか。私も自作の言語を考えていて、言語仕様は考えるのですが実装の方 まで手が回らずそういったことには疎いのです。 では