Luke Palmer wrote:
Seems reasonable. My generality alarm goes off when I realize that you can't specify commutativity for two of the three args, but that's fine because it's definitely a cpanable feature.
IIRC, it's possible to embed one signature within another one; if the embedded signature has two parameters and "is commutative" while the embedding signature is not commutative and has a third arg, wouldn't that produce commutativity for two out of the three, as long as they're adjacent?
> Does the trait only apply within one region of the arglist, or can I > create a 1-arg method that is commutative between the "self" arg and its > data arg? (I assume not -- I can't quite work out what that would mean) That's CPAN's job, I think.
IMHO, "is commutative" should only apply to positional args: named args have this behavior automatically, and trying to include the invocant would tend to interfere with the self-contained nature of classes and roles - that is, it would allow role A to define a method for role B. -- Jonathan "Dataweaver" Lang