OCaml Algorithmes génériques


Exemple

Les fonctions d'ordre supérieur peuvent être utilisées pour implémenter des algorithmes génériques, en renonçant à fournir les détails finaux à l'utilisateur. Par exemple, List.sort attend une fonction de comparaison permettant d'implémenter différentes méthodes de tri. Ici, nous implémentons un tri des chaînes sans tenir compte de la casse:

let string_case_insensitive_sort lst =
  let case_insensitive_compare a b =
    String.compare (String.lowercase a) (String.lowercase b)
  in
  List.sort case_insensitive_compare lst

Il y a une liste riche de fonctions d'ordre supérieur dans la bibliothèque standard, en particulier dans le module List , voir List.fold_left et List.sort par exemple. Des exemples plus avancés peuvent être trouvés dans des bibliothèques tierces. Un bon exemple est le recuit simulé implémenté dans ocaml-gsl . Le recuit simulé est une procédure d'optimisation générique paramétrée par une fonction permettant d'explorer l'ensemble des états du problème et une fonction d'erreur (appelée ici fonction énergétique).

Les utilisateurs familiers avec C ++ peuvent comparer cela au modèle de stratégie .