有没有办法用F#写这个?

Sha*_*bie 6 f#

let is_sum_greater_than_10 list =
    list
    |> Seq.filter (filter)
    |> Seq.sum
    |> (10 >)
Run Code Online (Sandbox Code Playgroud)

这不编译.查看最后一行"|>(10>)"有没有办法写这个,左边是二进制运算符的右边流水线?

谢谢

Str*_*ger 7

您可以使用(运算符 - 符号)语法<来使用运算符的部分应用程序:

let is_sum_greater_than_10 list =
    list
    |> Seq.filter filter
    |> Seq.sum
    |> (<)10
Run Code Online (Sandbox Code Playgroud)

您还可以将此视为lambda应用程序的等效项:

let is_sum_greater_than_10 list =
    list
    |> Seq.filter filter
    |> Seq.sum
    |> (fun x y -> x < y)10
Run Code Online (Sandbox Code Playgroud)

或只是一个lambda:

let is_sum_greater_than_10 list =
    list
    |> Seq.filter filter
    |> Seq.sum
    |> (fun y -> 10 < y)
Run Code Online (Sandbox Code Playgroud)

  • 在最后一个例子中,parens碰巧是可选的.`|> fun x - > x> 10`也可以正常工作. (2认同)