ドキュメントではそれは言う
上記のすべての例では、マルチメソッドシステムで使用されるグローバル階層を使用しています
グローバル階層とは何ですか?
core.cljをチェックして、を探します(def ^{:private true} global-hierarchy (make-hierarchy))
。のドキュメント文字make-hierarchy
列
「derive、isa?などで使用する階層オブジェクトを作成します。」
これとマルチメソッドシステムとの関係は、メソッド名を文字列として、また変数としてコンストラクターを呼び出す結果となるmacroexpand
onを実行することで確認できます。必要に応じてソースを調べることができますが、それはマルチメソッドの「内部」です。defmulti
clojure.lang.MultiFn
#'clojure.core/global-hierarchy
clojure.lang.MultiFn