Wie viele Möglichkeiten gibt es, die Fibonacci-Sequenz in Perl 6 zu beschreiben?
Ich habe mir die verschiedenen Möglichkeiten zum Erstellen von Lazy Lists in Perl 6 angesehen und möchte alle prägnanten Möglichkeiten zur Beschreibung der Fibonacci-Sequenz zusammenfassen.
Ich beginne dies mit den drei von masak 's Tagebuch:
my @fibs := (0, 1, -> $a, $b { $a + $b } ... *);
my @fibs := (0, 1, { $^a + $^b } ... *);
my @fibs := (0, 1, *+* ... *);
Ich dachte, so etwas würde auch funktionieren, aber ich denke, ich habe die Syntax falsch:
my @fibs := (0, 1, (@fibs Z+ @fibs[1..*]));
Etwas ist da eifrig (die Scheibe?) Und veranlasst Rakudo, in eine Endlosschleife einzutreten. Es ist eine Übersetzung der Haskell-Definition:
fibs = 0 : 1 : zipWith (+) fibs (tail fibs)
Aktualisieren
Scheint das Problem mit demzipWith
Beispiel ist das@fibs[1..*]
Scheibe. wenntail
ist definiert alssub tail (@x) {my $i = 1; {@x[$i++]}...*}
dann funktioniert es einwandfrei. Mich würde interessieren, warum die Scheibe von niemandem, der mit Rakudos Interna vertraut ist, nicht faul ist.
Eine andere schöne ist:
my @fibs := (0, [\+] 1, @fibs);