Juerd asked:

   2+ args: interpolate specified operator
   1 arg:   return that arg
   0 args:  fail (i.e. thrown or unthrown exception depending on use fatal)
Following this logic, does join(" ", @foo) with [EMAIL PROTECTED] being 0 fail too?

No. It returns empty string. You could think of C<join> as being implemented:

    sub join (Str $sep, [EMAIL PROTECTED]) { reduce { $^a ~ $sep ~ $^b } "", 
@list }

Just as C<sum> is probably implemented:

    sub sum ([EMAIL PROTECTED]) { [+] 0, @list }


I dislike this, and would prefer [op] with no elements to simply return
whatever () returns: an empty list in list context, undef in scalar
context.

I'd have assumed that "empty list in list context, undef in scalar
context" *is* what C<fail> returns when C<use fatal> isn't in effect.

Damian

Reply via email to