F#currying例子

时间:2016-03-21 08:30:02

标签: f#

我是F#的新手,我需要一个currying的例子。

是currying还是部分申请?

let multiplyByThree x =
    let multiply y = 
        y * x
    multiply 3

let result = multiplyByThree 3 // 9

1 个答案:

答案 0 :(得分:1)

部分应用程序是创建部分应用功能的过程,例如:

let sum x y = x + y // sum is a curried function, it's default in F#
let sum4 x = sum 4 x // partial application

Currying是一种将具有多个参数的函数表示为一系列函数的能力,这些函数采用单个参数并返回一个函数。

但是,如果你正在使用.NET函数,他们会接受tuples的参数,例如:

let sum (x,y) = x + y
// let sum4 x = sum 4 x // can't do that!
let sum4 x = sum (4,x) // this is valid. passing a tuple