Lambda F#匿名函数、管道

Lambda F#匿名函数、管道,lambda,f#,anonymous-function,pipelining,Lambda,F#,Anonymous Function,Pipelining,从我的f#课程开始,我就试图理解lambda函数,但有时仍然难以阅读和使用它们 let wordCount = "aaa aaa".Split [| ' ' |] wordCount.Length // 2 let letterCount = wordCount |> Array.sumBy (fun w -> w.Length) 我对上面几行的理解:前两行很简单,第三行我不懂。既然wordCount是一个字符串数组[|“aaa”;“aaa”|],array.

从我的f#课程开始,我就试图理解lambda函数,但有时仍然难以阅读和使用它们

let wordCount = "aaa aaa".Split [| ' ' |]
wordCount.Length // 2
let letterCount = wordCount |> Array.sumBy (fun w -> w.Length) 
我对上面几行的理解:前两行很简单,第三行我不懂。既然
wordCount
是一个字符串数组
[|“aaa”;“aaa”|]
array.sumBy(fun w->w.Length)
如何知道数组是作为参数传递的,而
(fun w->w.Length)
只能正常工作。sumBy只是在数组的每个元素上执行anon函数吗?在.map和其他类似的方法上也是这样吗


还有一个小问题,不同的是btw>>和|>?

用作
x |>f
操作符接受两个参数
f
x
。然后它将
x
作为参数传递给
f
,即调用
fx

这意味着:
wordCount>Array.sumBy(fun w->w.Length)

与:
Array.sumBy(fun w->w.Length)字数相同

现在,
Array.sumBy f input
是一个函数,它将
f
应用于输入数组
input
中的所有项,并对为各个元素返回的数字求和

因此,如果您有:
Array.sumBy(fun w->w.Lenght)[|“aa”;“b”|]

这与
((fun w->w.Lenght)“aa”)+((fun w->w.Lenght)“b”)相同

这就是:
aa.Length+b.Length
,也就是
3


函数合成操作符
f>>g
获取一个函数
f
g
,并生成一个新函数
(fun x->g(f x))
,该函数接受一个输入,将其传递给
f
,然后将结果传递给
g
操作符,用作
x |>f
接受两个参数
f
x
。然后它将
x
作为参数传递给
f
,即调用
fx

这意味着:
wordCount>Array.sumBy(fun w->w.Length)

与:
Array.sumBy(fun w->w.Length)字数相同

现在,
Array.sumBy f input
是一个函数,它将
f
应用于输入数组
input
中的所有项,并对为各个元素返回的数字求和

因此,如果您有:
Array.sumBy(fun w->w.Lenght)[|“aa”;“b”|]

这与
((fun w->w.Lenght)“aa”)+((fun w->w.Lenght)“b”)相同

这就是:
aa.Length+b.Length
,也就是
3

函数合成操作符
f>>g
获取一个函数
f
g
,并生成一个新函数
(fun x->g(f x))
,该函数接受一个输入,将其传递给
f
,然后将结果传递给
g
,因为f支持curry。你可以在网上读到。我发现这个网站对于新手来说是一个惊人的F#知识来源。这件事之所以有效,是因为F#支持咖喱。你可以在网上读到。我发现这个网站是新来者获取F#知识的惊人来源