TL;DR

  • Clojure のマルチメソッドでは、引数すべてに基づいて、どの実装を選ぶかを決める任意の関数をプログラマが指定できる。
  • ディスパッチは Java の継承や derive で作った親子関係を考慮し、衝突は prefer-method で解消する。
  • 実際のプロジェクトでマルチメソッドが使われることはめったにない。関数が型で分岐していたら検討し、迷ったら両方書いて読みやすいほうを選ぶ。

内容

マルチメソッドの定義、衝突の解消、アドホックな分類の導入、使いどころを扱う。マルチメソッドは、OOP のポリモーフィズムほど使用頻度は高くない。各節のまとめは次のページにある。

キーワード