Hi frank

normally it does not make sense to use two times the same trait. So I do not 
really understand
how it could work.

So now when you have two traits
        T1 
        T2

minus lets you erase selectively one message x from T1 if it is also available 
in T2
and without having to redefine it into the composite. 

Stef

> I have a Trait TGroup that requires #*, #identity and #inverse. I want
> to construct a TField by composing TGroup with itself. One TGroup will
> form the operations #*, #one, and #reciprocal while the other will
> form #+, #zero and #negated.
> 
> I don't want #identity or #inverse, because these apply to one
> operation, and it makes TField's API ambiguous. That's what
> TraitExclusion is for.
> 
> I had thought I could say
> 
> (TGroup @ {#identity->#zero. #* -> #+. #inverse->#negated} + TGroup @
> {#identity->#one. #inverse->#reciprocal}) - {#identity. #inverse}
> 
> but TraitComposition >> #- says that exclusion binds tighter than +.
> So in effect the above composition is the same as
> 
> TGroup @ {#identity->#zero. #* -> #+. #inverse->#negated} + (TGroup @
> {#identity->#one. #inverse->#reciprocal} - {#identity. #inverse})
> 
> In short, to remove the undesirable #identity and #inverse I have to
> exclude from both sides of the composition:
> 
> TGroup @ {#identity->#zero. #* -> #+. #inverse->#negated} -
> {#identity. #inverse} + TGroup @ {#identity->#one.
> #inverse->#reciprocal} - {#identity. #inverse}
> 
> My question is this: what is the reason for - binding more tightly
> than +? Why is it _not_ desirable to have - distribute over +?

Reply via email to