我有一个带有两个参数的构造函数的类型:
type Foo = Foo of int * int
我可以用 (int, int)
的元组调用它。
let foo = Foo(1,2)
但在我的例子中,我想部分应用构造函数以在管道中使用它
let someFunc param =
calculateSomeInt param
|> Foo 42 //error
但这是不可能的,因为无法以柯里化(Currying)形式调用构造函数。
是否有可能告诉 F# 我想要柯里化(Currying)形式的构造函数而不必定义新函数 let fooCtr a b = Foo (a,b)
?
最佳答案
不,没有。您在问题中提到的 let fooCtr a b = Foo (a,b)
方法是执行此操作的唯一方法。 (我可能会称它为 makeFoo
或更好的 mkFoo
而不是 fooCtr
我自己,因为我觉得函数名应该是动词,但这是个人的风格偏好)。
关于f# - 部分应用类型构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50736893/