Introduction
ML (contraction de Meta Language) est un langage de programmation généraliste fonctionnel
ML (contraction de Meta Language) est un langage de programmation généraliste fonctionnel
ML fut initialement développé par Robin Milner et d'autres personnes dans les années 1980 à l'Université d'Édimbourg, pour le système de preuves formelles LCF. R. Milner rencontrait des difficultés avec le système de typage de LISP qui permettait de « prouver » des assertions fausses.
ML est un langage fonctionnel impur : il est possible de programmer en impératif, et par conséquent, les fonctions peuvent être sujettes à des effets de bord, contrairement à des langages purement fonctionnels comme Haskell.
ML a été standardisé en 1983, puis révisé en 1997 ; le langage résultant s'appelle Standard ML (SML), et a été notamment implémenté dans Standard ML of New Jersey (SML/NJ). En parallèle, des équipes françaises ont développé Objective Caml, dont la popularité dans la communauté ML internationale est maintenant très grande.
Le typage de ML a été étendu avec du polymorphisme de première classe présent dans le système F de Jean-Yves Girard grâce à la thèse de Didier Le Botlan et à Didier Rémy au début des années 2000. On parle alors de MLF. Cette extension du typage était un problème posé depuis 1980. Aujourd'hui, ce langage est de plus en plus simplifié.
Les fonctionnalités de ML incluent :
D'autres avantages du ML sont :
Les points forts de ML le rendent particulièrement apte à l'écriture de langages, de compilateurs et de systèmes de preuve formelle.
Les principales implémentations sont le Standard ML et Objective Caml.
Standard ML :
Objective Caml (INRIA) ne suit pas le standard SML mais est plutôt une évolution orientée objet de ML. Ce langage se caractérise par un compilateur produisant des programmes disposant d'une très grande rapidité d'exécution ainsi qu'une bibliothèque importante. Les développeurs et les utilisateurs forment une communauté très active pour un langage issu de la recherche. OCaml a servi de base pour le développement du langage F# sur la plate-forme .NET de Microsoft.