SICP - Tại sao sử dụng tích lũy với khuyết điểm khi bộ lọc đã trả lại danh sách


8

Trong SICP 2nd Edition phần 2.2.3, các tác giả có đoạn mã sau:

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

Câu hỏi của tôi là tại sao họ sử dụng tích lũy trong trường hợp này? Họ không thể có câu trả lời tương tự từ bộ lọc mà không sử dụng tích lũy ?

Câu trả lời:


10

Trong đó phần của cuốn sách, filter, map, và enumerate-intervalđược coi là trở lại trình tự, đó là khái niệm riêng biệt từ danh sách. Bạn có thể triển khai các chuỗi bằng cách sử dụng các luồng, ví dụ, mặc dù bạn cũng có thể thực hiện các chuỗi bằng cách sử dụng danh sách.

Vì vậy, trong trường hợp này, accumulatevới conslà để chuyển đổi chuỗi thành một danh sách.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.