¿Por qué este operador de alimentación Perl 6 es una "declaración falsa"?

Tomé este ejemplo deDía 10 - Operadores de alimentación del Calendario de Adviento 2010 de Perl 6 con el ligero cambio de.uc Para el.ucfirst eso ya no está allí:

my @rakudo-people = <scott patrick carl moritz jonathan jerry stephen>;
@rakudo-people
    ==> grep { /at/ } ==> map { .uc } ==> my @who-it's-at;
say ~@who-it's-at;

Lo escribo de manera ligeramente diferente con algunos espacios en blanco adicionales:

my @rakudo-people = <scott patrick carl moritz jonathan jerry stephen>;
@rakudo-people
    ==> grep { /at/ }
    ==> map { .uc } ==> my @who-it's-at;
say ~@who-it's-at;

Ahora es una "declaración falsa":

===SORRY!=== Error while compiling ...
Bogus statement
------>         ==> grep { /at/ }⏏<EOL>
expecting any of:
    postfix
    prefix
    statement end
    term

Esto no es un problema solo con este ejemplo. Algunos ejemplos en los documentos actuales pueden exhibir el mismo comportamiento.

Si agrego ununspace Al final de la línea ofensiva, funciona de nuevo:

my @rakudo-people = <scott patrick carl moritz jonathan jerry stephen>;
@rakudo-people
    ==> grep { /at/ } \
    ==> map { .uc } ==> my @who-it's-at;
say ~@who-it's-at;

Curiosamente, un comentario al final de esa línea no funciona. Pensé que se habría comido el espacio en blanco ofensivo.

losoperador de alimentación dice:

En el caso de rutinas / métodos que toman un solo argumento o donde el primer argumento es un bloque, a menudo se requiere que llame entre paréntesis

Eso funciona:

my @rakudo-people = <scott patrick carl moritz jonathan jerry stephen>;
@rakudo-people
    ==> grep( { /at/ } )
    ==> map { .uc } ==> my @who-it's-at;
say ~@who-it's-at;

¿Pero por qué no fue eso un problema en la primera forma? ¿Qué está haciendo el espacio en blanco aquí? ¿Y qué situaciones se incluyen en "a menudo requerido"?

Respuestas a la pregunta(1)

Su respuesta a la pregunta