SICP: ¿por qué usar acumular con contras cuando el filtro ya devuelve una lista

8

En SICP 2nd Edition sección 2.2.3, los autores tienen el siguiente código:

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

Mi pregunta es ¿por qué usaron acumular en este caso? ¿No podrían haber obtenido la misma respuesta del filtro sin usar acumular ?

RAbraham
fuente

Respuestas:

10

En esa sección del libro, filter, map, y enumerate-intervalse presume que volver secuencias, que son conceptualmente diferentes de las listas. Puede implementar secuencias usando secuencias, por ejemplo, aunque también puede implementar secuencias usando listas.

Entonces, en este caso, el accumulatecon conses convertir la secuencia a una lista.

Chris Jester-Young
fuente