¿De cuántas maneras hay para describir la secuencia de Fibonacci en Perl 6?

He estado buscando las diversas formas de construir listas perezosas en Perl 6 y me gustaría recopilar todas las formas concisas de describir la secuencia de Fibonacci.

Comenzaré esto con los tres demasakdiario de:

my @fibs := (0, 1, -> $a, $b { $a + $b } ... *);

my @fibs := (0, 1, { $^a + $^b } ... *);  

my @fibs := (0, 1, *+* ... *);

Estaba pensando que algo como esto también funcionaría, pero creo que tengo la sintaxis incorrecta:

my @fibs := (0, 1, (@fibs Z+ @fibs[1..*]));

Algo está ansioso (¿el corte?) Y hace que Rakudo entre en un bucle infinito. Es una traducción de la definición de Haskell:

fibs = 0 : 1 : zipWith (+) fibs (tail fibs)

Actualizar:

Parece que el problema con elzipWith ejemplo es el@fibs[1..*] rebanada. Sitail Se define comosub tail (@x) {my $i = 1; {@x[$i++]}...*} entonces funciona correctamente Me interesaría saber por qué el corte no es perezoso para alguien familiarizado con las partes internas de Rakudo.

Otra buena es:

my @fibs := (0, [\+] 1, @fibs);

Respuestas a la pregunta(2)

Su respuesta a la pregunta