##
sub max (
::Type *$first, Type *@rest # one or more values in list context
:&compare:(Type $, Type $ --> Bool) = &[less] # function, with default
--> Type) # returns the same type as the arguments
{ ... }
##
##
my $comp = { length($^left) > length($^right) }
my $result = max @values :compare<$comp>; # use adverb syntax