2017-03-24 18 views
8

假設我想用一個函數來運行一個摺疊函數f(x,y)。這可以用解開函數

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

做我有種感覺,就必須有一個高階函數抽象出該模式,採用期望一個元組,並把它變成一個期望兩個獨立的參數的函數的函數。

F#標準庫中是否有這樣的函數?如果不是這樣,寫起來容易,但是它應該怎麼稱呼? untuple

回答

14

該功能在大多數功能語言中通常被稱爲curry。它的定義是:

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

可惜這不是在F#核心的lib,但它在許多外部基礎庫可用,像F#xF#+