2019 Update See the section Variadic positionals destructuring; +@foo
and *@foo
in my answer to the SO question "variable number of arguments to function/subroutine".
In 2015 Larry Wall introduced the +
parameter prefix, one of four parameter prefixes (*
, **
, +
, |
) that signify slurpy (variadic) parameters. He added it to the Rakudo compiler, added some tests, gave a brief informal description of it on the irc channel, and added a section on it to the relevant language design doc.
The example quoted in the original question is taken from an archive of an informal document written and frozen in time over a decade ago. At that time a +
parameter prefix signified a named parameter as contrasted with a positional one. Nowadays we use :
for that, thus:
submethod BUILD (:$tail, :@legs, *%extraargs) {
$.tail = $tail;
@.legs = @legs;
}