HaloO Juerd, you wrote:
Except that () doesn't return a reference to an anonymous scalar of the list it surrounds.
Of course not. The inside of the .() call operator has type Signature and the dispatch goes to the implementation that has the closest type distance to the types of the actual args. This is the same for all the postcircumfix ops (), [], {}, <> and «». In our case here the type of the non-invocant part of the Signature is simply Void. The single invocant's type to the left of the operator is determining the receiving method implementation. The return type of this method and the rhs are used in dispatching &infix:{'='}. This is how type systems based on MMD work. How much of this dispatching can be pre-calculated at compile time is irrelevant for the semantics. The only thing that is a bit unclear to me is if the dot is part of the operator name---like a sigil---or purely syntactical. A method is e.g. also not defined with the dot: class Blahh { method .example ( $non_invocant ) {...} } -- TSa (Thomas Sandlaß)