On Mon, May 21, 2012 at 6:08 PM, Mark Engelberg
<mark.engelb...@gmail.com> wrote:

> I never said I want inheritance.  I want convenient reuse of partial
> implementations.  Inheritance is one way to achieve it, but I'd like to
> think that Clojure can find a better way.

We also have macros.

You can always make your own

(defmytype TypeName ...)

and make compile to a  deftype that rolls in the protocol
implementations you want to reuse.


I believe the current mechanisms
> are insufficient.  Copy and paste is not good enough.  Mergeable maps are a
> good idea, but the current way of doing things steers people away from that
> solution and requires too much forethought to actively plan for reuse.  If I
> implement a protocol inside of defrecord, all that implementation is "locked
> inside" and no one can get at it or reuse it in other contexts.  This flies
> in the face of so many design principles of Clojure which generally eschew
> unnecessary encapsulation and privacy to make it easy to get at, reuse, and
> extend data and functions.
>
> As I proposed in an earlier email, one brainstorm I have about this is:
>
> (get-protocol-implementation <type> <protocol-or-interface>) gives you back
> a mapping of the functions used by that type to implement that protocol.
> Also, we need a way to use mappings of functions inside of
> defrecord/deftype, not just extend, if that is technologically feasible.
>
> I am genuinely interested in further brainstorms on the topic of how to
> encourage reuse of protocol implementations *without* inheritance.
>
> --
> 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 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