マルチメソッド

CLOSの提供するマルチメソッドは非常に自然かつ豊かな仕組みだ.(Javaで言う)inputStr.equals(command)のような不自然な記述も,Object#toStringとString.valueOfのような,直観性の欠如を補うために提供される無駄なメソッド群も避けられる.クラス間の有機的結合への寄与は計り知れない.ついでに言えば既存クラスの再定義に近いこともかなりの度合で行えるが,前述の諸性質のおかげでそれが必要になる局面は少ない.それでいてメインストリームのOOP言語が採用する「暗黙の第1引数(thisポインタの指すもの)」によるディスパッチ,もしくはメッセージ渡しモデルを真部分集合として含むので移行も容易だ.将来的には,進歩の著しい型理論の知見を取り込むことで一層の発展が見込めるだろう.(ただしSmalltalkくらいの濃いOOPLの実現するメッセージ渡しモデルはかなり「深い」らしいが,そこまでは知らない.)
... と妄想に見えなくもないセリフを書き連ねても仕方がない.Javaに関数的プログラミングのかおりを積極的に取り込み,マルチメソッドも導入したNICEという言語があるが,マルチメソッドの可能性を覗くには便利だろう.classファイル互換性もある.なお,これは きなば師 経由の情報.次に Multi-Dispatch in the Java Virtual Machine: Design and Implementation は言語Javaには手をつけずJavaVMを拡張してマルチメソッドを実現する話.最後に Java MultiMethod Framework は完全にJavaの枠組内のクラスライブラリで,リフレクションをがりがり使っているようだ.
他にも無数にあるが,私のような日曜プログラマが完全な概観を示すことは無理.