こんな基準でどうか。用語には自信ありません クラス(or 型) X のインスタンスを Duck のように振る舞わせたいとき… intrusive:X を定義するときに一緒に "X は Duck っぽい" と明記する 例: class X implements Duck { ... } nonintrusive-explicit: 外付けで "XはDuckっぽい" と明記する 例: (ある場所で) data X = ... (別のところで) instance Duck X where ... nonintrusive-implicit: 明記しない。普通 duck typing と言うとこれ。特に dynamic なものを指す。 例: template<typename X> void foo(X x) { x.like_a_duck(); } dynamic: 特定のメソッドを持った異なる