¿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);