ML (Meta Language) è un linguaggio di programmazione funzionale, sviluppato dall’equipe di Robin Milner presso l’Università di Edimburgo nel 1973.
Robin Milner
ML ha una sintassi ispirata al linguaggio astratto ISWIM e nasce per la verifica formale dei teoremi attraverso LCF (LCF Approach to Theorem Proving), sfruttando l’algoritmo di inferenza dei tipi di Hindley-Milner, che permette di inferire praticamente tutti i tipi senza bisogno di dichiarazioni.
ML viene definito come “linguaggio funzionale impuro” (a differenza di Haskell, ad esempio) perché consente la programmazione imperativa, e dispone di funzioni per: valutazione delle espressioni con chiamata per valore, gestione automatica della memoria attraverso un meccanismo di garbage collection, polimorfismo parametrico, tipizzazione statica, inferenza dei tipi, tipi di dati algebrici, pattern matching e gestione delle eccezioni.
Il linguaggio è particolarmente adatto alle applicazioni teoriche, come il progetto e lo sviluppo di linguaggi (compilatori, analizzatori, dimostratori di teoremi) ma ha trovato applicazione anche in ambito di bioinformatica, analisi finanziarie, ecc. In particolare, ML è di fatto il precursore di numerosi linguaggi: da SML (Standard ML, del 1990) a Ocaml (Objective Caml) ed influenzasse la progettazione di diverse soluzioni moderne come F#, Cyclone e Nemerle.