Mais pourquoi ocaml ?

Ses performances

C'est un des langages les plus performant avec un garbage collector : Benchmark avec comme critère : vitesse et consommation mémoire
Au final OCaml consomme peu de mémoire tout en restant dans les plus rapides et tout cela sans demander au développeur de gérer la mémoire!

L'environnement par défaut, ses outils :

Mine de rien, lorsque vous télécharger les sources ocaml-3.10.1.tar.bz2 de 2.2 Mo, vous aller avoir accès à un nombre important d'outils avancés :

Sa richesse

C'est à coup sûr un des seuls langage à permettre de choisir le paradigme le plus adapté pour chaque partie de son programme!
Nous pouvons ainsi utiliser selon le contexte du fonctionnel, de l'impératif ou de l'objet.
Mais ce langage va encore plus loin, et intègre des concepts de programmation que tout langage digne de ce nom devrait intégrer:

Voici comment obtenir un quicksort clair et simple avec du filtrage par motif, du fonctionnel, des types inférés ainsi que des fermetures et une fonction d'ordre supérieur :

 let rec quicksort = function                     (* filtrage par motif du paramètre d'entrée qui est la liste à trier *)
    | [] -> []                                                     (* [] est une liste vide *)
    | pivot :: rest ->                                       (* pivot = premier element, rest = le reste de la liste *)
        let is_less x = x < pivot in                 (* fermeture, car nous utilisons la variable pivot *)
        let left, right = List.partition is_less rest in       (* partition est une fonction d'ordre supérieur car is_less est une fonction *)
        (quicksort left) @ [pivot] @ (quicksort right)     (* @ permet de concaténer des listes *)
(* le tout sans avoir à préciser les types ... *)
(* List.partition p l returns a pair of lists (l1, l2), where l1 is the list of all the elements of l that satisfy the predicate p, and l2 is the list of all the elements of l that do not satisfy p. *)