On Mon, Aug 23, 2010 at 8:13 PM, Baishampayan Ghose <b.gh...@gmail.com>wrote:
> > While python's multimethod module allows function overloading based on > > types, here's another approach to do the same based on a switching > function > > (clojure style) or on a set of conditions. > > > > Clojure style multimethod functions in > > python< > http://codeblog.dhananjaynene.com/2010/08/clojure-style-multi-methods-in-python/ > > > > Please don't claim that the above is `Clojure style multimethods'. > Clojure multimethods can dispatch on an arbitrary function of `the > arguments' given to the multimethod and not just on any arbitrary > function of `the properties of the object'. > BG, Could you help explain in light of the following (the argument lists are in bold). The switcher function is provided exactly the same arguments as the various multimethods. Probably something about clojure I am not aware of ? Dhananjay def multi(switcher_func): """ Declares a multi map based method which will switch to the appropriate function based on the results of the switcher func""" def dispatcher(*args, **kwargs): key = *switcher_func(*args, **kwargs)* func = dispatcher.dispatch_map[key] if func : return *func(*args,**kwargs)* else : raise Exception("No function defined for dispatch key: %s" % key ) dispatcher.dispatch_map = {} return dispatcher > > Regards, > BG > > -- > Baishampayan Ghose > b.ghose at gmail.com > _______________________________________________ > BangPypers mailing list > BangPypers@python.org > http://mail.python.org/mailman/listinfo/bangpypers > -- -------------------------------------------------------- blog: http://blog.dhananjaynene.com twitter: http://twitter.com/dnene _______________________________________________ BangPypers mailing list BangPypers@python.org http://mail.python.org/mailman/listinfo/bangpypers