ML (lingua)

ML (contraction of Meta Language ) è un linguaggio di programmazione di uso generale funzionale .

Storia

ML è stato originariamente sviluppato da Robin Milner e altri negli anni '70 presso l' Università di Edimburgo , per il sistema di prove formali Logic for Computable Functions  (in) (CFL). R. Milner ha incontrato difficoltà con il sistema di battitura del Lisp che ha permesso di "provare" false asserzioni.

Il ML è un linguaggio funzionale impuro  : è possibile programmare in modo imperativo e, di conseguenza, le funzioni possono essere soggette a effetti collaterali indesiderati (chiamati "edge"), a differenza dei linguaggi puramente funzionali come Haskell .

ML è stato standardizzato nel 1983 , poi rivisto nel 1997  ; il linguaggio risultante è chiamato Standard ML (SML), ed è stato in particolare implementato in Standard ML del New Jersey (SML / NJ). Allo stesso tempo, i team francesi hanno sviluppato Caml , che ora è molto popolare nella comunità internazionale di ML.

Il sistema di tipo ML è stato ampliato con polimorfismo di prim'ordine presente nel sistema F di Jean-Yves Girard con la tesi di Botlan Didier e Didier Remy nei primi anni 2000 è noto come MLF. Questa estensione della digitazione è stata un problema dal 1980. Oggi questo linguaggio è sempre più semplificato.

Caratteristiche

Le funzionalità ML includono:

Altri vantaggi del ML sono:

I punti di forza di ML lo rendono particolarmente adatto per la scrittura di linguaggi, compilatori e sistemi di prova formale.

Implementazioni

Le principali implementazioni sono Standard ML e OCaml.

ML standard:

OCaml (INRIA) non segue lo standard SML ma è piuttosto un'evoluzione orientata agli oggetti del ML. Questo linguaggio è caratterizzato da un compilatore che produce programmi con velocità di esecuzione molto elevate e da un'ampia libreria. Sviluppatori e utenti formano una comunità molto attiva per un linguaggio di ricerca. OCaml è servito come base per lo sviluppo del linguaggio F # sulla piattaforma .NET di Microsoft.

Note e riferimenti

  1. http://wwwdgeinew.insa-toulouse.fr/~lebotlan/papers/lbr03.pdf , articolo in inglese presentato alla conferenza ICFP 2003 | http://wwwdgeinew.insa-toulouse.fr/~lebotlan/mlf.html