ML, een afkorting van Meta Language, is een functionele programmeertaal voor algemene doeleinden. Het heeft een statisch bereik, wat betekent dat een variabele altijd verwijst naar de omgeving op het hoogste niveau. ML kan een onzuivere functionele taal worden genoemd omdat het bijwerkingen mogelijk maakt, die de meeste functionele programmeertalen niet toestaan. Een bijwerking is wanneer een procedure een variabele van buiten de scope verandert.
Zoals de meeste programmeertalen, gebruikt ML gretige evaluatie, dus een uitdrukking wordt geëvalueerd zodra deze aan een variabele is gebonden. Dit staat lijnrecht tegenover luie evaluatie. Een luie evaluatie kan echter nog steeds worden bereikt door het gebruik van sluitingen. ML wordt gebruikt voor meta-programmering of het schrijven van programma’s die andere programma’s manipuleren. ML staat bekend om het gebruik van het Hindley-Milner-type-systeem, dat automatisch de typen van de meeste uitdrukkingen toewijst zonder dat expliciete type-annotaties nodig zijn en dat zorgt voor typeveiligheid. ML wordt ook gebruikt voor:
- Wetenschappelijke toepassingen
- Stellingaanbieders
- Analysatoren, compilers en programmeertalen
- Toepassingen voor financiële systemen
- Bio-informatica en genealogische databases
Kenmerken van ML
ML is een strikt getypeerde taal, wat betekent dat een goed getypeerde taal geen runtime-typefouten veroorzaakt. Het beschikt over een automatisch geheugenbeheersysteem via garbage collection, dus geheugen wordt automatisch toegewezen en vrijgemaakt door de compiler. Parametrisch polymorfisme wordt ondersteund, wat betekent dat een enkele polymorfe functie kan worden geschreven om een parameter van elk compatibel type aan te nemen. Andere kenmerken zijn:
- Eersteklas functies
- Statisch typen
- Typ interferentie
- Patroonovereenkomst voor functionele argumenten
- Afhandeling van uitzonderingen
- Algebraïsche gegevenstypen
ML is ook de afkorting voor machine learning, een soort data-analyse waarbij algoritmen worden gebruikt om van data te leren.