On Sat, Oct 29, 2011 at 7:02 AM, David McNeil <mcneil.da...@gmail.com> wrote:
> A couple of more thoughts on this.
>
> On Oct 28, 12:46 pm, Howard Lewis Ship <hls...@gmail.com> wrote:
>> (extend-type cascade.Asset
>>   ToAttributeValueString
>>   (to-attribute-value-string [asset] (:client-url asset)))
>
> The reason this is probably not what you really want is that the set
> of types which satisfy the Asset protocol is a superset of the set of
> types which satisfy the cascade.Asset interface. This is certainly not
> immediately obvious, but one way to understand it is that if you
> extend a built-in Java type to implement your protocol, it does not
> change the underlying type to implement the protocol's interface.
> Rather it provides machinery in the protocol itself that knows how to
> use the built-in Java type to satisfy the protocol.
>
>> I don't think it is useful to try and think of this as interface
>> inheritance because it is not the same as interface inheritance in
>> Java.
>
> I wasn't used to thinking of it as inheritance, but after thinking
> about it more it seems like "inheritance" is a reasonable way to think
> of it. Adapting protocol A to protocol B is like saying that all types
> satisfying protocol B can also be used as if they satisfy protocol A
> and furthermore there is a default implementation (that can be over-
> ridden) of protocol A for them.

And then, before you know it, you've created Haskell type classes.

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



-- 
Howard M. Lewis Ship

Creator of Apache Tapestry

The source for Tapestry training, mentoring and support. Contact me to
learn how I can get you up and productive in Tapestry fast!

(971) 678-5210
http://howardlewisship.com

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

Reply via email to