ML
Funktionsprogrammeringssproget ML har navn efter karakteriseringen Meta Language og skyldes, at sproget har udviklet sig fra en formalisme (beskrevet af Robin Milner i 1978) til at finde beviser og foretage bevisførelse i et formelt logisk system. Det viste sig, at de nødvendige hjælpemidler hertil var kraftige nok til at udgøre et generelt programmeringssprog. Versionen SML (Standard ML) er defineret i en rapport fra 1990, revideret i 1997. Et bemærkelsesværdigt træk ved disse sprogdefinitioner er, at ikke alene sprogets syntaks, men også dets semantik er fastlagt gennem en præcis formalisme (operationssemantisk notation).
Karakteristisk for sproget er det stærke typesystem, som er et meget elegant kompromis, der forener stor frihed for programmøren med muligheden for, at oversætteren kan lokalisere programfejl. Undlades typeangivelser, udledes den mest generelle anvendelige type af oversætteren, som derefter foretager et indgående typecheck. En sprogkonstruktion kan have en polymorf (egentlig "flerformet") type, hvilket betyder, at den kan anvendes i forskellige typemæssige sammenhænge, og hvilket viser sig ved, at der må benyttes typevariable i beskrivelsen af dens type.
ML indeholder imperative elementer, og kan derfor ikke entydigt henregnes til funktionsprogrammeringssprogene. Under udførelse af ML-programmer er det nødvendigt med spildopsamling.
ML har et avanceret modulsystem, der er integreret med typesystemet og gør det muligt at lave højt parametriseret generisk programmering. Blandt andet er det muligt at parametrisere moduler med andre moduler.
Standard ML bliver primært brugt i den akademiske verden, men andre sprog i ML-familien (f.eks. OCaml og F#) har udstrakt brug i erhvervslivet.
