質問

F# で関数への参照を別の関数に渡すことは可能ですか?具体的には、次のようなラムダ関数を渡したいと思います

foo(楽しい x -> x ** 3)

具体的には、自分で作成した関数内で、渡された関数をどのように参照するかを知る必要があります。

役に立ちましたか?

解決

はい、可能です。の マニュアル こんな例があります:

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

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

他のヒント

関数は F# の第一級市民です。したがって、必要に応じてそれらを渡すことができます。

このような関数がある場合:

let myFunction f =
    f 1 2 3

そして f が関数の場合の戻り値 myFunctionf 1、2、3に適用されます。

ラムダ関数を別の関数に渡すと、次のように動作します。

次のような独自の自明な関数があるとします。

let functionThatTakesaFunctionAndAList f l = List.map f l

これで、ラムダ関数とそれにリストを渡すことができます。

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

独自の関数の内部 functionThatTakesaFunctionAndAList ラムダ関数を次のように参照することができます f 最初のパラメータを呼び出したため f.

もちろん、関数呼び出しの結果は次のようになります。

float list = [1.0; 8.0; 27.0]
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top