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.

Reply via email to