这个折叠实际上在做什么?
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
使用该函数的方式是获取初始状态,将文件夹应用到该初始状态和第一个元素,然后将文件夹应用到结果状态和第二个元素,依此类推...
作为我的问题的一部分 (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
使用该函数的方式是获取初始状态,将文件夹应用到该初始状态和第一个元素,然后将文件夹应用到结果状态和第二个元素,依此类推...