SICP - Perché usare accumulare con contro quando il filtro già restituisce un elenco

8

In SICP 2nd Edition sezione 2.2.3, gli autori hanno il seguente codice:

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

La mia domanda è: perché hanno usato accumula in questo caso? Non potevano avere la stessa risposta da filtro senza usare accumulare ?

    
posta RAbraham 22.12.2012 - 17:49
fonte

1 risposta

10

In quella sezione del libro, si presume che filter , map e enumerate-interval restituiscano sequenze, concettualmente distinte dalle liste. È possibile implementare sequenze utilizzando gli stream, ad esempio, sebbene sia possibile implementare sequenze utilizzando anche gli elenchi.

Quindi, in questo caso, accumulate con cons serve per convertire la sequenza in una lista.

    
risposta data 22.12.2012 - 21:42
fonte

Leggi altre domande sui tag