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ß)

Reply via email to