ライブラリで clojure プロトコルを見ると、プロトコル メソッドが関数にラップされていることが多く、機能がほとんど追加されていないことがよくあります。例えば:
(defprotocol Pfoo
(foo-method [this]))
(deftype Atype [x y]
Pfoo
(foo-method [this] (do-something)))
(defn foo [arg] (foo-method arg))
また、クライアントは通常、プロトコルの foo メソッドではなく、関数 foo を呼び出すことが期待されます。(この種の具体的な例については、 clojurescript コアの上部にあるプロトコルを参照してください。
では、プロトコルが関数の背後に隠されることが多いのはなぜでしょうか? プロトコル メソッドは、ラッピング機能ではなく、クライアントに面する部分になることができませんでしたか?