【发布时间】:2015-06-20 05:31:51
【问题描述】:
我有一个创建异步工作流的函数,以及接受 10 个 curry 风格参数的函数。例如
let createSequenceCore a b c d e f g h i j =
async {
...
}
我想创建另一个函数来启动该工作流,所以我有
let startSequenceCore a b c d e f g h i j =
Async.StartImmediate (createSequenceCore a b c d e f g h i j)
有什么办法可以去掉那些多余的参数吗?我尝试了<< 运算符,但这只能让我删除一个。
let startSequenceCore a b c d e f g h i =
Async.StartImmediate << (createSequenceCore a b c d e f g h i)
(我在这个问题中添加了 Haskell 和 Scala,即使代码本身是 F#,因为我真正想要的是如何进行这种柯里化,这适用于任何问题;我认为 Haskell 或 Scala 答案将很容易移植到 F# 并且很可能被标记为正确答案)。
注意合理地表明没有简单的解决方案也可以获得赏金。
更新天哪,我不会给与问题争论的答案打 100 分,而不是回答它,即使它是最高票数,所以在这里:
我有一个创建异步工作流的函数,以及接受 4 咖喱风格参数的函数。例如
let createSequenceCore a b c d =
async {
...
}
我想创建另一个函数来启动该工作流,所以我有
let startSequenceCore a b c d =
Async.StartImmediate (createSequenceCore a b c d)
有什么办法可以去掉那些多余的参数吗?我尝试了<< 运算符,但这只能让我删除一个。
let startSequenceCore a b c =
Async.StartImmediate << (createSequenceCore a b c)
【问题讨论】:
-
添加了更完整的答案作为编辑,请查看。
标签: scala haskell f# pointfree