解开一个函数

rwa*_*ace 9 f# higher-order-functions

假设我想使用期望元组f(x,y)的函数运行折叠.这可以通过以下方式完成

List.fold (fun x y -> f (x, y)) x xs
Run Code Online (Sandbox Code Playgroud)

我觉得应该有一个高阶函数来抽象出该模式,采用一个期望元组的函数并将其转换为需要两个独立参数的函数.

F#标准库中有这样的功能吗?如果没有,很容易写,但它应该被称为什么?untuple

Gus*_*Gus 15

在大多数函数语言中,该函数通常称为curry.它的定义是:

let curry f x y = f (x, y)
Run Code Online (Sandbox Code Playgroud)

不幸的是,它不在F#核心库中,但它可以在许多外部基础库中使用,例如F#xF#+.