質問
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 が関数の場合の戻り値 myFunction は f 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]
所属していません StackOverflow