I can't comment on most of your questions, but the few that I can answer are inline below...
Jon Lang wrote: > Yes, I know that there is no S08. I'm working on writing one, ++ > * What types are you allowed to assign to an invocant? Whatever the type constraint says. When you write class Foo { method bar ($x, $y) }, then bar's signature gets an invocant of type Foo implicitly. If you write ... method bar (A $s:, $x, $y), then the type constraint is A. > * Are placeholder parameters ever considered to be part of a > function's longname? (I'm expecting that they aren't: if you want a > longname, you ought to specify it in a formal signature.) I expect they are; to me placeholder variables are just a different way to write a signature, spread out all over the block. 08:41 <@moritz_> rakudo: say {$^a + $^b}.arity 08:41 < p6eval> rakudo 78cb4c: OUTPUT«2» So they already count towards the arity (which makes sense, otherwise map, reduce etc. couldn't work with it); why should they be omitted from the longname then? > * does the use of placeholder parameters interfere with the use of the > slurpy parameters normally provided by the default signature (i.e., > *...@_ and *%_)? I'm guessing not. As far as I understand, you can only use placeholder parameters on a sub or a block with no explicit signature. When you use them, you give them a signature. *...@_ and *%_ are not part of that signature. (so yes, the interfere). Cheers, Moritz