Documentation for routine prepend assembled from the following pages:

Class: Any §

From Any

(Any) method prepend §

Defined as:

multi method prepend(Any:U: --> Array)
multi method prepend(Any:U: @values --> Array)

Called with no arguments on an empty variable, it initializes it as an empty Array; if called with arguments, it creates an array and then applies Array.prepend on it.

my $a;
say $a.prepend# OUTPUT: «[]␤» 
say $a;         # OUTPUT: «[]␤» 
my $b;
say $b.prepend(1,2,3); # OUTPUT: «[1 2 3]␤»

Class: Nil §

From Nil

(Nil) method prepend §

method prepend(*@)

Warns the user that they tried to prepend onto a Nil or derived type object.

Role: Buf §

From Buf

(Buf) method prepend §

method prepend$elems )

Adds elements at the beginning of the buffer

$.prepend0 );
say $.raku# OUTPUT: «Buf.new(0,1,1,2,3,5,8,13,21,34,55,89)» 

Class: Array §

From Array

(Array) routine prepend §

Defined as

sub prepend(\array|elems)
multi method prepend(Array:D: \values)
multi method prepend(Array:D: **@values is raw)

Adds the elements from LIST to the front of the array, modifying it in-place.

Example:

my @foo = <a b c>;
@foo.prepend: 13 ... 11;
say @foo;                   # OUTPUT: «[1 3 5 7 9 11 a b c]␤»

The difference from method unshift is that if you prepend a single array or list argument, prepend will flatten that array / list, whereas unshift prepends the list / array as just a single element.