2009/3/24 Konrad Hinsen <konrad.hin...@laposte.net> > > On Mar 24, 2009, at 11:19, mikel wrote: > > > Dispatch is wholly deterministic; you never need prefer-method. There > > Then what is the rule for choosing one method when there are several > that match the arguments? > > > In the scope in which a generic function is applied, next-method is > > always bound to the next applicable method in a total ordering of > > applicable methods for the arguments supplied (see the first > > java.lang.Integer method below for an example of how to use next- > > method). applicable-methods is always bound to a function that returns > > a list of applicable methods, ordered from most- to least-specific; > > next-method is equal to (first (applicable-methods)). > > So I guess that the chosen method is the first one in the applicable- > methods list, meaning the "most specific" one. The question is then > how "specificity" is defined, in particular for multiple argument > dispatch. Suppose in your example that I provide > > (define-method add [x y] ...) > (define-method add [[x java.lang.Integer] y] ...) > (define-method add [x [y java.lang.Integer]] ...) > > and call (add 3 3). Which of the methods is chosen? >
Isn't it the second, which is the most specific on the first argument ? (I think I remember this from CLOS ...) > > Konrad. > > > > --~--~---------~--~----~------------~-------~--~----~ 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 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 -~----------~----~----~----~------~----~------~--~---