言語ゲーム

とあるエンジニアが嘘ばかり書く日記

Twitter: @propella

イアンの話

今日は一日中ミーティングみたいな感じになってしまってしんどかった。

さて、イアンが言うには彼のオブジェクトモデルは、オブジェクト X メソッドのような書き方をすると、むしろ オブジェクト X メソッド X 引数 ... のように引数によってもメソッドディスパッチをしたいという事らしかった。大島さんが、それってむしろ メソッド X (オブジェクト, オブジェクト, ...) なのでは無いかと言うと、カリー化すれば オブジェクト X メソッド という対だけ考えれば良いという事だった。まあそうなると関数型言語と同じ事なわけで、私は大変嬉しいのだが、気になるのが継承をどう捕らえるか。

今の設計では、Javascript みたいなプロトタイプ方式を取っていて、知らないスロットはプロトタイプに問い合わせるという事になっているのだが、うまく行くのだろうか?プロトタイプを継承するという事は、データ構造を継承するという事だけど、Haskell の型クラスにしても、Squeak の trait にしても、世の中の趨勢としては、データ構造の継承はやめてインタフェースだけにしましょうという向きだと思うんだけど、どう折り合いを付けるのか楽しみだ。

アランさんの話でびっくりしたのが、アランさんが Smalltalk で後悔している物として、メソッドの多態に意味を与える機能を入れそこなったという話があった。例えば print だったらどんなオブジェクトでも文字列を返して欲しいし、+ だったら両辺の評価順序を問わないみたいに、ただのダックタイピングじゃなくルールを設けたかったらしいのだ。それってどの型クラス???

ようするに、彼らの話を総合すると、どう考えても Haskell に向かっているとしか言いようが無い。問題は、静的型への不信感がある事だけど。ゴールがどうあれ、Haskell みたいな物が出来るのはとても楽しみだ。