Wat is het ML-bestandsformaat?
.ml is de standaard extensie voor bronbestanden van de programmeertaal OCaml, een statisch getypeerde functionele taal met objectgeoriënteerde en imperatieve kenmerken, ontwikkeld bij INRIA in Parijs. De extensie is afgeleid van ML (Meta Language), de taalfamilie waarvan OCaml afstamt.
Elk .ml-bestand definieert één OCaml-module, die automatisch wordt vernoemd naar het bestand met de eerste letter als hoofdletter - parser.ml wordt de module Parser. Het bijbehorende .mli-interfacebestand declareert wat de module publiekelijk blootstelt en fungeert vergelijkbaar met een C-headerbestand.
Bronbestanden bevatten reeksen OCaml-declaraties: let-bindingen, type-definities, module- en functor-definities, exceptie-declaraties en klasse-definities. Een let () = ... expressie op het hoogste niveau dient volgens conventie als het startpunt van het programma.
Bestanden worden gecompileerd door ocamlc naar bytecode of door ocamlopt naar native machinecode. Het Dune-bouwsysteem en de pakketbeheerder opam zijn de standaardtools voor projectbeheer. OCaml 5.x (vanaf 2022) introduceerde effect-handlers en multicore-parallellisme, wat nieuwe syntaxis toevoegde die niet wordt geaccepteerd door oudere compilers.
De .ml-extensie wordt af en toe ook gezien voor Standard ML-bestanden, hoewel die gemeenschap doorgaans .sml gebruikt. Het dominante gebruik is OCaml, dat in 2025 versie 5.3 bereikte.
Beveiliging & veiligheid
RISICO: LOWPlatte tekst broncode; geen uitvoeringsrisico bij opening in een tekstverwerker. Risico alleen bij compilatie en uitvoering - controleer de code voordat u niet-vertrouwde .ml-bestanden compileert.
Formaatdetails
in een notendop- Standard ML (SML) bronbestand - Sommige Standard ML-implementaties accepteren .ml, maar .sml is de conventionele extensie.
- Reason/ReasonML bronbestand - De Reason-syntaxis van Facebook voor OCaml bestaat af en toe naast .ml-bestanden in hetzelfde project.
Programma's die ML-bestanden openen
Technische details
diepe specificaties| Taalfamilie | ML (Meta Language) - functioneel, statisch getypeerd |
| Modulenaamgeving | Elk `.ml`-bestand = één module; bestandsnaam met hoofdletter wordt modulenaam |
| Interface-metgezel | `.mli`-bestand declareert de publieke signatuur van de module (analoog aan een header) |
| Bytecode-compiler | `ocamlc` → `.cmo` objectbestand / `.cma` bibliotheek-output |
| Native compiler | `ocamlopt` → `.cmx` / `.cmxa` / native binary |
| Bouwsysteem | Dune (standaard modern); OMake, Makefile (verouderd) |
| Codering | UTF-8; volledige Unicode ondersteund sinds OCaml 4.14 (verouderde codebases: ASCII) |
| Opmerkelijke syntaxis-toevoegingen | OCaml 4.02 (attributen), 4.08 (binding operators), 5.x (effects, domains) |
| Type-systeem | Hindley-Milner met GADTs, polymorfe varianten en first-class modules |
| MIME-type | `text/x-ocaml` |
| Standaardbibliotheek-module | `Stdlib` (hernoemd van `Pervasives` in OCaml 4.07) |
| Geassocieerd OS | Linux, macOS, Windows, FreeBSD |
| Uitgebracht | 1973 (ML); OCaml .ml usage since 1996 |
| Laatste versie | OCaml 5.3 (2025) |
| Open standaard | Ja · royaltyvrij |
| Specificatie | v2.ocaml.org |
ML conversies
Community V&A
gevraagd door gebruikersNog geen vragen - wees de eerste om iets te vragen over ML-bestanden.