这个折叠实际上在做什么?

What is this fold actually doing?

作为我的问题的一部分 (),我偶然发现了一个使用 Seq.fold 函数的解决方案,但语法对我来说很奇怪。

本质上:

items
|> Seq.fold (fun (someState) theItem -> ....) someInitialState

我知道它在功能上的作用,但我不完全确定它是如何它在做什么...

是否在括号中单独指定 SomeState 来创建一个 someInitialState 然后被部分应用的柯里化函数?

我认为这不是 fold 函数特有的东西,很可能只是利用了我没有看到的函数原理。

括号什么都不做。这就是文件夹的样子。

如果你看折叠的类型:

Seq.fold : ('State -> 'T -> 'State) -> 'State -> seq<'T> -> 'State

文件夹函数属于'State -> 'T -> 'State类型。这意味着它需要一个状态和一个元素,returns 一个新状态。事实上它是咖喱的,但这在这里并不重要。

fold 使用该函数的方式是获取初始状态,将文件夹应用到该初始状态和第一个元素,然后将文件夹应用到结果状态和第二个元素,依此类推...