在F#中传递函数

时间:2008-09-04 15:59:36

标签: f# functional-programming lambda

是否可以将函数的引用传递给F#中的另一个函数?具体来说,我想传递像

这样的lambda函数

foo(有趣的x - > x ** 3)

更具体地说,我需要知道如何在我自己编写的函数中引用传递函数。

3 个答案:

答案 0 :(得分:5)

是的,有可能。 manual有这个例子:

> List.map (fun x -> x % 2 = 0) [1 .. 5];;

val it : bool list
= [false; true; false; true; false]

答案 1 :(得分:2)

功能是F#中的头等公民。因此,您可以按照自己的意愿传递它们。

如果你有这样的功能:

let myFunction f =
    f 1 2 3

f 是函数,然后 myFunction 的返回值 f 应用于1,2和3。

答案 2 :(得分:2)

将lambda函数传递给另一个函数的方式如下:

假设我们有一个简单的函数,如下所示:

let functionThatTakesaFunctionAndAList f l = List.map f l

现在您可以将lambda函数和列表传递给它:

functionThatTakesaFunctionAndAList (fun x -> x ** 3.0) [1.0;2.0;3.0]

在我们自己的函数functionThatTakesaFunctionAndAList中,您可以将lambda函数称为f,因为您调用了第一个参数f

函数调用的结果当然是:

float list = [1.0; 8.0; 27.0]