Сколько существует способов описать последовательность Фибоначчи в Perl 6?

Я рассмотрел различные способы построения отложенных списков в Perl 6 и хотел бы собрать все краткие способы описания последовательности Фибоначчи.

Я начну это с трех изМАСАКЖурнал:

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

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

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

Я думал, что-то вроде этого также будет работать, но я думаю, что у меня неправильный синтаксис:

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

Что-то там стремится (кусок?) И заставляет Ракудо войти в бесконечный цикл. Это перевод определения Haskell:

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

Обновить:

Похоже, проблема сzipWith Примером является@fibs[1..*] ломтик. еслиtail определяется какsub tail (@x) {my $i = 1; {@x[$i++]}...*} тогда это работает правильно. Мне было бы интересно узнать, почему ломтик не ленивый от любого, кто знаком с внутренностями Ракудо.

Еще один приятный:

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

Ответы на вопрос(2)

Ваш ответ на вопрос