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])
folddalam istilah reducelebih rumit dari itu - jenis akumulator foldtidak harus sama dengan jenis benda dalam daftar!
fold f a ldapat ditulis sebagaireduce f a::l.