Been working on a tiny snippet of code related to multimethods (something I've never quite wrapped my head around) and when it comes to the dispatching of the function I'm confused by the order in which I've to pass the arguments in as it seems to go against all common sense.
To show what I am trying to do (to begin with); ignoring name conflictions. Without implementing algorithm details I supply a simple string for ease. (defmulti transform (fn [language data] language)) (defmethod transform :html [_ data] (str data " will be transformed into html"))) (defmethod transform :java-fx [_ data] (str data " will be transformed into javafx")) What I would expect from this outcome would be to do the following on dispatch (transform :html "some data") => "some data will be transformed into html" But instead the output I actually get ends up being "some data" which I assume to be the default for mulitmethods to return the data value. Though if I were to instead to change the order of the arguments like so. (transform "some data" :html) => "some data will be transformed into html" The expect outcome I wanted but not with the "correct" argument order I was expecting, and to also note this (for me) prevents me from having more than one argument and dispatch case. I know that I can do this approach (transform {:language :html} "some data") and it would work in the correct order but it's extra data I'm looking to avoid for the sake of correct argument order Ideally I would of like the code to look something like below (defmulti transform :language) (defmethod transform :html [data] (str data " will be transformed into html")) (defmethod transform :java-fx [data] (str data " will be transformed into javafx")) I'd be grateful if someone could give me some simple examples to go by that work by keyword dispatch that isn't foobaz, thank you :) -- 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 --- You received this message because you are subscribed to the Google Groups "Clojure" group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.