Lambda F#匿名函数、管道
从我的f#课程开始,我就试图理解lambda函数,但有时仍然难以阅读和使用它们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.
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#知识的惊人来源