Default implementation for defprotocol

2014-11-17 Thread pmf
Is there a way to provide a default (fallback) implementation for a method 
defined in a defprotocol directive? I do realize that I could extend the 
protocol for type java.lang.Object, but this raises the question about how 
protocol implementations with extend are sorted, i.e. how specializations 
of types of the same hierarchy are resolved. Is the most specialized 
implementation used if I implement a protocol for a class as well as its 
parent class and if yes, is this independent of the order of definition for 
the protocol extensions?

-- 
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.


Re: Default implementation for defprotocol

2014-11-17 Thread Bronsa
That's correct, the most specialized implementation is used. In the case
where more there is no implementation more specialized than another (two
interfaces are extended to a protocol and a class implements both) then an
arbitrary implementation from the available ones will be selected.

Extending a Object and nil to a protocol is a good way to provide a default
impl.
Another option is to wrap the protocol functions in another function and
testing for satisfies?.
 Il giorno 17/nov/2014 10.49, pmf phil.fr...@gmx.de ha scritto:

 Is there a way to provide a default (fallback) implementation for a method
 defined in a defprotocol directive? I do realize that I could extend the
 protocol for type java.lang.Object, but this raises the question about how
 protocol implementations with extend are sorted, i.e. how specializations
 of types of the same hierarchy are resolved. Is the most specialized
 implementation used if I implement a protocol for a class as well as its
 parent class and if yes, is this independent of the order of definition for
 the protocol extensions?

 --
 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.


-- 
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.