如何使这个F#代码更紧凑

时间:2014-11-28 04:38:08

标签: f# pipe composition

我想从:

let a = fun x ->
        x
        |> f
        |> g

这样的事情:

let a = |> f
        |> g

我试过了:

let a = (<|)  f 
              |> g

和similars

1 个答案:

答案 0 :(得分:7)

let a = fun x -> x |> f |> g

相当于

let a x = x |> f |> g

您似乎希望编写两个函数fg来创建新函数a。您可以使用>>运算符来编写函数。你可以写:

let a = f >> g

如果fg是通用函数,则由于F#value restrictions而无法编译。在这种情况下,您需要添加类型注释:

let a<'a> : ('a -> 'a) = f >> g