trait

仕様書の Overview とかを読んだ(暇人)。なんというか、オブジェクトと型のシステムは JavaHaskell まぜてぶっこんだあと再構成したみたいな印象かなぁ。いや、用語は Java っぽいけど性質的には CLOS のが近いのか?どっちとも違うけど。
以下、よくわかってない人があやふやなことを書くので注意。

Fortressのオブジェクトシステムでは、クラスじゃなくて trait とかいうのが出てきてると。メソッドの宣言をまとめる構造に trait(トレイト?特性?) という名前を付けたらしい。で、多重継承とかができて、メソッドの定義は abstract でも concrete でもいいと。ちなみに object は trait と殆ど変わらんけどメソッドが全て concrete である必要があって、また field が持てて、使える状態になったものを言うと。更に継承ツリーでは object が必ず葉になるんかな?
これだけやと trait が多重継承を許す抽象クラスと何が違うのかわからんが、この trait が実は型クラスなんかな?そもそも型クラスをちゃんと理解できてないんでアレやが、この trait で実現される型が trait type(各traitの名前が型名に) とか object trait type(各objectの名前が型名) で、これとは別に tuple type(タプルの型) とか arrow type(関数の型) とかあるけど、これは trait type とかを組み合わせた型みたいなんやから一番重要なのはやっぱ trait ということに。Exception とかも全部 trait 上で定義されてるっぽいし、きっと trait を制すれば Fotress を制するに違いない。

なんか、trait が普通のクラスシステムより良いって言ってる論文があるらしい。ふーむ。論文読む気はないが、ほんまやろうか…。