タイプヒントを使用して、2 つの単一引数メソッドを区別しようとしています。
たとえば、add-vertex は可変数の引数を取ることができる Java メソッドをラップしているため、ここでは add-vertex が 0、1、または 2 個の引数を取るようにしようとしています...
(defmulti add-vertex (fn [& args] (map class args)))
(defmethod add-vertex [] (add-vertex nil nil))
(defmethod add-vertex Integer [id] (add-vertex id nil))
(defmethod add-vertex Map [props] (add-vertex nil props))
(defmethod add-vertex [Integer Map] [id props]
((let [vertex (. *g* addVertex id)]
(when props
(apply set-props vertex (interleave (map name (keys props)) (vals props))))
vertex)))
単一引数関数が 2 つあることに注意してください。それぞれが異なる型をとります (id は Java Integer で、props は Java Map です)。私はClojureが初めてなので、これは完全に間違っていると思います。