Hello everybody, It is awesome that we can specify our own dispatch functions and corresponding values.. However, I feel we should also have control over the functions that is used to match the value of the dispatch function with that of the one specified in the defmethod. For instance if my dispatch function is
*(defn mclass [s]* * (vec (reverse (loop [ret '() val s]* * (if (coll? val)* * (recur (cons (class val) ret) (first val))* * (cons (class val) ret))))))* which basically tries to give a list of all the nested types of a value. If a value is a collection, then all its elements are of same type. so the above function when applied on .. let us say *(mclass #{'([1 2] [3 4])* * '([5 6] [7 8])})* the return value would be *[clojure.lang.PersistentHashSet clojure.lang.PersistentList clojure.lang.PersistentVector java.lang.Integer]* I would like to despatch based on some pattern of the return value of my dispatch function *mclass* * * For instance I would like to say something like when the second element of return value of the dispatch function is *PersistentList call method1 and call method2 when say the first element is PersistentList and second element is say PersistentHashSet and call method3 for some other pattern. Basically a general pattern matching .. So if only I could have a way of changing how the equality for the purpose of dispatching behaves .. it would be wonderful. We could either do this or we could change the dispatch-val to a dispatch-function with a single argument .. Or is there a way to already do this?* In short is it possible to do a generic pattern-matching during dispatch in multimethods? Sunil. -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en