Mencoba mempelajari F # tetapi bingung ketika mencoba membedakan antara lipat dan kurangi . Lipat tampaknya melakukan hal yang sama tetapi membutuhkan parameter tambahan. Adakah alasan yang sah mengapa kedua fungsi ini ada atau ada untuk mengakomodasi orang-orang dengan latar belakang yang berbeda? (Misalnya: String dan string di C #)
Berikut cuplikan kode yang disalin dari contoh:
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
dalam istilah reduce
lebih rumit dari itu - jenis akumulator fold
tidak harus sama dengan jenis benda dalam daftar!
fold f a l
dapat ditulis sebagaireduce f a::l
.