SICP - Warum mit Akkumulieren akkumulieren, wenn der Filter bereits eine Liste zurückgibt?


8

In Abschnitt 2.2.3 der SICP 2nd Edition haben die Autoren den folgenden Code:

(define (even-fibs n)
  (accumulate cons
              nil
              (filter even?
                      (map fib
                           (enumerate-interval 0 n)))))

Meine Frage ist, warum sie in diesem Fall akkumulieren ? Könnten sie nicht die gleiche Antwort vom Filter erhalten haben, ohne akkumulieren zu verwenden ?

Antworten:


10

In diesem Abschnitt des Buches, filter, map, und enumerate-intervalsind , vermutet Sequenzen zurückzukehren, die aus Listen konzeptionell verschieden sind. Sie können Sequenzen beispielsweise mithilfe von Streams implementieren, obwohl Sie Sequenzen auch mithilfe von Listen implementieren können.

In diesem Fall besteht das accumulatewith consdarin, die Sequenz in eine Liste zu konvertieren.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.