値 v が存在する seq s のインデックスを返す関数があります。
(defn indexes-of [v s]
(map first (filter #(= v (last %)) (zipmap (range) s))))
私がやりたいのは、これを拡張して、存在テストに任意の関数を適用することです。私の考えは、マルチメソッドを使用することですが、関数を検出する方法が正確にはわかりません。私はこれをしたい:
(defmulti indexes-of ???)
(defmethod indexes-of ??? [v s] ;; v is a function
(map first (filter v (zipmap (range) s))))
(defmethod indexes-of ??? [v s] ;; v is not a function
(indexes-of #(= v %) s))
マルチメソッドはここに行く方法ですか?もしそうなら、どうすれば私がやろうとしていることを達成できますか?