Đang cố gắng học F # nhưng lại nhầm lẫn khi cố gắng phân biệt giữa gấp và giảm . Fold dường như làm điều tương tự nhưng có thêm một tham số. Có lý do chính đáng nào để hai chức năng này tồn tại hay chúng ở đó để chứa những người có hoàn cảnh khác nhau? (Ví dụ: Chuỗi và chuỗi trong C #)
Đây là đoạn mã được sao chép từ mẫu:
let sumAList list =
List.reduce (fun acc elem -> acc + elem) list
let sumAFoldingList list =
List.fold (fun acc elem -> acc + elem) 0 list
printfn "Are these two the same? %A "
(sumAList [2; 4; 10] = sumAFoldingList [2; 4; 10])
fold
về mặt reduce
phức tạp hơn thế - loại tích lũy của fold
không nhất thiết phải giống với loại thứ trong danh sách!
fold f a l
có thể được viết nhưreduce f a::l
.