O que é o formato de ficheiro ML?
.ml é a extensão de arquivo de origem padrão para a linguagem de programação OCaml, uma linguagem funcional estaticamente tipada com recursos orientados a objetos e imperativos desenvolvida no INRIA, Paris. A extensão deriva de ML (Meta Language), a família de linguagens da qual o OCaml descende.
Cada arquivo .ml define um módulo OCaml, nomeado automaticamente após o arquivo com sua primeira letra em maiúscula - parser.ml torna-se o módulo Parser. O arquivo de interface .mli complementar declara o que o módulo expõe publicamente, agindo de forma semelhante a um arquivo de cabeçalho C.
Os arquivos de origem contêm sequências de declarações OCaml: vinculações let, definições de type, definições de module e functores, declarações de exceções e definições de classes. Uma expressão let () = ... no nível superior serve como o ponto de entrada do programa por convenção.
Os arquivos são compilados pelo ocamlc para bytecode ou pelo ocamlopt para código de máquina nativo. O sistema de build Dune e o gerenciador de pacotes opam são as ferramentas de gerenciamento de projeto padrão. O OCaml 5.x (2022 em diante) introduziu manipuladores de efeitos e paralelismo multicore, adicionando nova sintaxe não aceita por compiladores mais antigos.
A extensão .ml também é vista ocasionalmente para arquivos Standard ML, embora essa comunidade normalmente use .sml em seu lugar. O uso dominante é OCaml, que atingiu a versão 5.3 em 2025.
Segurança e proteção
RISCO: LOWCódigo-fonte em texto simples; sem risco de execução ao ser aberto em um editor de texto. Risco apenas quando compilado e executado - revise o código antes de compilar arquivos .ml não confiáveis.
Detalhes do formato
em resumo- Arquivo de origem Standard ML (SML) - Algumas implementações de Standard ML aceitam .ml, mas .sml é a extensão convencional.
- Arquivo de origem Reason/ReasonML - A sintaxe Reason do Facebook para OCaml ocasionalmente coexiste com arquivos .ml no mesmo projeto.
Programas que abrem arquivos ML
Detalhes técnicos
especificação profunda| Família da linguagem | ML (Meta Language) - funcional, estaticamente tipada |
| Nomeação de módulos | Cada arquivo `.ml` = um módulo; nome do arquivo em maiúscula torna-se o nome do módulo |
| Complemento de interface | O arquivo `.mli` declara a assinatura pública do módulo (análogo a um cabeçalho) |
| Compilador de bytecode | `ocamlc` → arquivo de objeto `.cmo` / saída de biblioteca `.cma` |
| Compilador nativo | `ocamlopt` → `.cmx` / `.cmxa` / binário nativo |
| Sistema de build | Dune (padrão moderno); OMake, Makefile (legado) |
| Codificação | UTF-8; Unicode completo suportado desde OCaml 4.14 (bases de código legadas: ASCII) |
| Adições de sintaxe notáveis | OCaml 4.02 (atributos), 4.08 (operadores de vinculação), 5.x (efeitos, domínios) |
| Sistema de tipos | Hindley-Milner com GADTs, variantes polimórficas e módulos de primeira classe |
| Tipo MIME | `text/x-ocaml` |
| Módulo da biblioteca padrão | `Stdlib` (renomeado de `Pervasives` no OCaml 4.07) |
| SO associado | Linux, macOS, Windows, FreeBSD |
| Lançado | 1973 (ML); OCaml .ml usage since 1996 |
| Versão mais recente | OCaml 5.3 (2025) |
| Padrão aberto | Sim · livre de royalties |
| Especificação | v2.ocaml.org |
Conversões de ML
Perguntas e Respostas da Comunidade
perguntado por usuáriosAinda não há perguntas - seja o primeiro a perguntar sobre arquivos ML.