部分应用类型构造函数

dan*_*iol 3 f#

我有一个带有两个参数的构造函数的类型:

type Foo = Foo of int * int
Run Code Online (Sandbox Code Playgroud)

我可以用一个元组来称呼它(int, int).

let foo = Foo(1,2)
Run Code Online (Sandbox Code Playgroud)

但在我的情况下,我想部分应用构造函数在管道中使用它

let someFunc param =
    calculateSomeInt param
    |> Foo 42  //error
Run Code Online (Sandbox Code Playgroud)

但这是不可能的,因为构造函数不能以curry形式调用.

是否有可能告诉F#我想要以咖喱形式构造函数而不必定义新函数let fooCtr a b = Foo (a,b)

rmu*_*unn 7

不,没有.let fooCtr a b = Foo (a,b)您在问题中提到的方法是唯一的方法.(我可能会称之为makeFoo或更好,mkFoo而不是fooCtr我自己,因为我觉得功能名称应该是动词,但这是个人风格偏好).