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