シェルリ(Schärli)が発案して Smalltalk でその実効を試したトレイト(Traits。エンティティとしては trait)はちょっとわかりにくい言語機能なので Ruby のモジュールや Scala のトレイト(これまた紛らわしい名前…)に代表されるミックスインと比較してみましょう。 まず、ミックスインというのは Ruby で話題にはなりましたが特に新しい機構というわけではなく、むしろもっとも古く、オーソドックスな多重継承機構です。クラスまたはクラスに準ずるエンティティ(Ruby ならモジュール、Scala ならトレイト(名称詐欺!)、抽象クラスなど、インスタンス生成能を持たないクラス様のもの)を継承パスに任意の数を挿入できる機構がミックスインです。 それに対して、トレイトは継承機構とはまったく関係ないところで機能します。端的には、本来であればクラスの一部であるメソッド辞書(ある