Thanks, that's vey helpful. On Tuesday, 7 March 2017 11:35:12 UTC-8, Alex Miller wrote: > > Per the docs at https://clojure.org/reference/protocols, if more than one > protocol extension applies and one is derived from the other then the > derived one will be used. In other cases (like two independent interfaces), > it is undefined and in my experience you will see different ones get > applied between different runs of the JVM. The order the extensions are > applied should not affect the first case. > > Other options are to use multimethods (which do allow you to express order > preferences) or to avoid ambiguous extensions through the use of > conditionals either before the call or within the the most generic protocol > extension. > > Alex > > On Tuesday, March 7, 2017 at 1:14:50 PM UTC-6, Tianxiang Xiong wrote: >> >> Does `extend-protocol` guarantee order when used with subtypes? >> >> E.g. suppose class Foo implements interface IFoo. Then, extending both >> Foo and IFoo with protocol Bar: >> >> (extend-protocol Bar >> Foo >> (do-bar [] >> "Foo-bar") >> >> IFoo >> (do-bar [] >> "IFoo-bar")) >> >> Is calling `do-bar` on an object of type Foo guaranteed to give "Foo-bar" >> instead of "IFoo-bar"? >> >> >> >>
-- 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.