Warum kann ich das Ergebnis eines "Tails" in einer Perl 6-Liste nicht "tailen"?

8

Warum kann ich tail nicht das Ergebnis eines tail ? Ich kann head für die Sequenz tail returns (und andere Variationen) aufrufen, aber ein tail für ein tail funktioniert nicht (in 2017.10):

%Vor%

Dieser Punkt schlägt fehl:

%Vor%

Aber ein list drin zu werfen funktioniert:

%Vor%     
brian d foy 07.12.2017, 21:51
quelle

1 Antwort

8

Dies ist ein Fehler.

Die .count-only Optimierungsmethode für List.iterator berücksichtigte nicht, dass der Iterator bereits beim Aufruf der Methode (hier beim ersten .tail Aufruf) teilweise verbraucht wurde, wie timotimo ++ in die Kommentare, behalten immer die ursprüngliche Länge zurück. Die argless .tail tendierte dann diese Methode und traf den Bug.

Dies ist jetzt auf 2017.11-76-gf70e20b Rakudo

festgelegt

Wenn ich das Iterator-Protokoll nicht missverstand, war derselbe Fehler in einigen anderen Iteratoren vorhanden Danke, dass du diesen Bienenstock gefunden hast!

    
Zoffix Znet 08.12.2017 01:59
quelle

Tags und Links