f# - 部分应用类型构造函数

标签 f#

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

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/

相关文章:

f# - 我如何分析 F# 脚本

c# - 如何从 C# 可移植类库 (PCL) 添加对 F# 可移植库的引用

F#:递归收集和过滤 N 元树

f# - 面向铁路的编程和部分应用

c# - IEnumerable<IDisposable> : who disposes of what and when -- Did I get it right?

asynchronous - F# 中异步等待按键?

sql-server-2008 - 在 F# 中,如何使用 Type Provider 访问 Sql Server Geography 数据类型?

f# - 是否有任何支持工具,如 F# 的 coderush 或 resharper?

reflection - 使用反射创建 Action<'T> 的实例

F# 计算表达式 : How to use `for` to return a `seq` ?