SICP - Por que usar acumular com contras quando o filtro já retorna uma lista

8

Na seção 2.2.3 do SICP 2nd Edition , os autores têm o seguinte código:

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

Minha pergunta é por que eles usam acumular neste caso? Eles não poderiam obter a mesma resposta do filtro sem usar o acumular ?

RAbraham
fonte

Respostas:

10

Em que seção do livro, filter, map, e enumerate-intervalse presume que retornar seqüências, que são conceitualmente distintos de listas. Você pode implementar sequências usando fluxos, por exemplo, embora também possa implementar sequências usando listas.

Portanto, nesse caso, o accumulatecom consé converter a sequência em uma lista.

Chris Jester-Young
fonte