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 ?

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.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.