Tentando aprender F #, mas fiquei confuso ao tentar distinguir entre fold e reduzir . Fold parece fazer a mesma coisa, mas requer um parâmetro extra. Existe uma razão legítima para essas duas funções existirem ou elas existem para acomodar pessoas com diferentes origens? (Por exemplo: String e string em C #)
Aqui está o trecho de código copiado da amostra:
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
em termos de reduce
é mais complicado do que isso - o tipo de acumulador de fold
não precisa ser o mesmo que o tipo de coisas da lista!
fold f a l
pode ser escrito comoreduce f a::l
.