On Dec 7, 2010, at 11:10 PM, Matthew D. Swank wrote:

> On 12/07/2010 09:19 PM, Faré wrote:
>> A better question might be
>> how do you enforce disjointness of some mixins. I suppose a
>> heavy-handed use of MOP magic could do it, but oh well.
> Q: Doctor, it hurts when I do this.
> A: Well, don't do that.
> 
> In the examples I looked at that inspired me to use IPS (<map> might
> have been one), sets of mixins partition (part of) a default
> implementation, and most of methods specialize only on interface types. 
> As a whole, the parts of the protocol implemented by a set of mixins
> depend only the unimplemented generic functions, and not on any
> particular datatype. Kinda a Ruby Module-y, Smalltalk Trait-y sort of
> thing. 
> 

This is how I use mixins, too -- as "trait"-y sort
of things that provide implementation of a protocol,
but don't "contribute" to the type.  That is, there
is a single-inheritance "backbone" that may, or may
not, have implementations of the protocol(s), and
zero or more mixins that provide bits of implementation.
I tend to avoid having mixin classes provide any public
slots, although there may be internal slots to aid in
the implementation.

Just my two cents...


_______________________________________________
pro mailing list
[email protected]
http://common-lisp.net/cgi-bin/mailman/listinfo/pro

Reply via email to