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#语法的细分.谢谢.
在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.