我之间的差异的理解List.fold,并List.foldBack为在其相反的顺序列表折返迭代.这两个函数都会累积列表中项目的结果.
我很难想出一个很好的例子,最好将foldBack放在列表上.在我提出的示例中,如果函数逻辑执行相同的操作,则fold和foldBack的结果相同.
[<Fact>]
let ``List.foldBack accumulating a value from the right to the left``() =
let list = [1..5]
let fFoldBack x acc =
acc - x
let fFold acc x =
acc - x
let foldBackResult = List.foldBack fFoldBack list 0
let foldResult = List.fold fFold 0 list
Assert.Equal( -15, foldBackResult ) // 0 - 5 - 4 - 3 - 2 - 1
Assert.Equal( -15, foldResult ) // 0 - 1 - 2 - …Run Code Online (Sandbox Code Playgroud)