OOPSLA 2004の「Applying Traits to the Smalltalk Collection Classes」を読み返し、 Traitsについて考えてみる。
で、しばらく考えるにRubyのようなOpenなクラス/モジュールを持つ動的言語では、 TraitsよりもMix-inの方が適しているという結論に達した。
しかし、Traitsの演算は魅力だ。Moduleへ演算を追加することで、 Mix-inのまま、Traitsの利点を導入することは理論的には可能のような気がするが、 普通に実装すると実行効率が下がりそうな気がする。
内部的に多重継承を素直に実装するのが一番単純だが、 CLOSのように毎回クラスリストをソートするのは避けたい。
いろいろ考えるに、
ことで、Traitsの良さとMix-inの良さのいいとこ取りができそうだが、 タイムスタンプを格納する領域とか、excludeの効率の良い実装とか、 実現までには解決しなければならない問題がいくつかありそうだ。