F#Seq.fold intellisense

Duc*_*tro 2 syntax extension-methods f#

我正在学习F#并且正在努力解析出现的intellisense Seq.fold:

val fold : ('State -> 'T -> 'State) -> 'State -> seq<'T> -> 'State
Run Code Online (Sandbox Code Playgroud)

在C#中我习惯了Aggregate扩展方法,并且可以完全理解C#声明:

(extension) TAccumulate Aggregate<TSource, TAccumulate>(this IEnumerable<TSource> source, TAccumulate seed, Func<TAccumulate, TSource, TAccumulate> func);
Run Code Online (Sandbox Code Playgroud)

因此,为了在这种情况下理解/推断F#语法,我一直在尝试在Seq.fold和之间建立类比,Aggregate但这可能是错误的方法.我明白->定义一个函数(或签名?),但除此之外,我很难读出出现的内容.

要清楚,我不需要如何使用折叠的例子; 我只是在寻找Seq.fold智能感知中使用的F#语法的细分.谢谢.

ken*_*ytm 5

在F#和许多其他功能的语言,'a -> 'b -> 'c -> 'd是取类型的参数的函数的类型'a,'b,'c作为输入*,并返回一个'd.所以

  ('State -> 'T -> 'State)
//  1st      2nd   output
Run Code Online (Sandbox Code Playgroud)

在C#中,是指类型的函数

State func<State,T>(State firstInput, T secondInput);
Run Code Online (Sandbox Code Playgroud)

  ('State -> 'T -> 'State) -> 'State -> seq<'T> -> 'State
//1st input (a function)      2nd       3rd        output
Run Code Online (Sandbox Code Playgroud)

在C#中,是指类型的函数

State func<State,T>(Func<State, T, State> firstInput,
                    State secondInput, 
                    IEnumerable<T> thirdInput);
Run Code Online (Sandbox Code Playgroud)

*:目前忽略了currying.