Question

Est-il possible de passer une référence à une fonction à une autre fonction en F# ?Plus précisément, j'aimerais transmettre des fonctions lambda comme

foo(amusant x -> x ** 3)

Plus précisément, j'ai besoin de savoir comment je ferais référence à la fonction passée dans une fonction que j'ai moi-même écrite.

Était-ce utile?

La solution

Oui c'est possible.Le manuel a cet exemple:

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

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

Autres conseils

Les fonctions sont des citoyens de première classe en F#.Vous pouvez donc les faire circuler comme bon vous semble.

Si vous avez une fonction comme celle-ci :

let myFunction f =
    f 1 2 3

et F est une fonction alors la valeur de retour de maFonction est F appliqué à 1,2 et 3.

Passer une fonction lambda à une autre fonction fonctionne comme ceci :

Supposons que nous ayons notre propre fonction triviale comme suit :

let functionThatTakesaFunctionAndAList f l = List.map f l

Vous pouvez maintenant lui passer une fonction lambda et une liste :

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

Dans notre propre fonction functionThatTakesaFunctionAndAList vous pouvez simplement vous référer à la fonction lambda comme f parce que tu as appelé ton premier paramètre f.

Le résultat de l’appel de fonction est bien entendu :

float list = [1.0; 8.0; 27.0]
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top