OCaml (option informatique) · Chapitre 1 · Exercice de TD
Fonction d'ordre supérieur et polymorphisme
Découvrir OCaml : expressions, valeurs et types · niveau 2
Énoncé
Écrire une fonction compose qui, à deux fonctions f et g, associe la fonction . Donner son type inféré et l'illustrer.
Corrigé
# let compose f g x = f (g x);;
val compose : ('a -> 'b) -> ('c -> 'a) -> 'c -> 'b = <fun>
# let ajoute1_puis_double = compose (fun n -> 2 * n) (fun n -> n + 1);;
val ajoute1_puis_double : int -> int = <fun>
# ajoute1_puis_double 5;;
- : int = 12
Le type est polymorphe : g produit un 'a que f consomme, d'où l'enchaînement 'c -> 'a -> 'b. La composition n'impose aucun type concret : elle vaut pour toutes les fonctions compatibles.
Exercices semblables
- Portée lexicale corrigé
- Application partielle corrigé
- Manipuler des n-uplets corrigé
- L'algorithme d'Euclide corrigé
- Suite définie par récurrence mutuelle corrigé