Fonction d'ordre supérieur et polymorphisme
Exercice · OCaml (option informatique), chapitre 1 — Découvrir OCaml : expressions, valeurs et types
É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.
Les autres exercices de ce chapitre Le cours du chapitre
Un blocage sur cet exercice ? Le tuteur d'Adloun guide par questions, sans donner la réponse.