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

Reply via email to