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

Reply via email to