Damian Conway wrote: >> Let's assume that op is overloaded for two completely unrelated types >> A and B, which are both defining their respective identity elements >> but !(A.identval =:= B.identval). How should the &op multi method object >> pick the correct one *without* looking at $value's type? > > > Your mistake is in thinking that the identity trait is on the operand > type. It isn't; it's on the operator itself. I agree, that the pair of operator and type which determines the identity element can be stored as a trait of the operator implementation. *But* the operator selection from the multi has to use the type of $value. In particular it might not be inferable at compile time. Thus the compiler has to produce MMD code and hook half way into it to perform the selected call with two args: the identity &op.identval and $value. Which brings me to the question: is there a syntax to invoke the target selection from a multi? E.g. &op.select($value,$value) here? Or is it &op:($value,$value)? -- TSa (Thomas Sandlaß)Thread Previous | Thread Next