解开一个函数

Untupling a function

假设我想 运行 使用需要元组 f (x, y) 的函数进行折叠。这可以用

来完成
List.fold (fun x y -> f (x, y)) x xs

我觉得应该有一个高阶函数来抽象出该模式,接受一个需要元组的函数并将其转换为需要两个单独参数的函数。

F#标准库中有这样的函数吗?如果不是,写起来很容易,但它应该习惯上叫什么? untuple?

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

let curry f x y = f (x, y)

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