Le langage ML est un langage fonctionnel qui est statiquement mais implicitement typé. La gestion de la mémoire est automatique. Grâce au typage statique mais implicite, il est possible d'écrire des compilateurs dont le code généré est très efficace sans que le programmeur soit obligé de déclarer le type des variables.