OCaml
Un lenguaje funcional de la familia ML, con inferencia de tipos, coincidencia de patrones y un sistema de módulos fuerte.
29 pasos en 1 tours, desde lo básico hasta programas completos.
Los tours
- Primera versión
- 1996
- Creado por
- Xavier Leroy and the Cristal team at INRIA
- Tipado
- Estático y del todo inferido; inmutable hasta que se deletree lo contrario
- Los fragmentos siguen
- 5.5
- Extensiones de archivo
- .ml, .mli
Para qué sirve
OCaml es la rama de producción de la familia ML: inferencia Hindley-Milner tan completa que las anotaciones de tipo son una elección de documentación, variantes y coincidencia de patrones que el compilador audita por cobertura, y un sistema de módulos — firmas, functores — que sigue siendo el punto de referencia contra el que se compara la historia de módulos de cualquier otro lenguaje. El compilador a código nativo es genuinamente rápido, y el runtime ganó soporte multinúcleo en su reescritura 5.0.
Su usuario industrial más famoso es Jane Street, que mueve miles de millones de dólares diarios a través de OCaml y financia buena parte de las herramientas del ecosistema — dune, el sistema de build de facto, entre ellas. Más allá de las finanzas es el lenguaje de las herramientas de lenguajes: Coq (hoy Rocq) está escrito en él, el primer compilador de Rust lo estuvo, Flow y Hack salieron de él en Meta, y un largo linaje de type checkers, probadores y analizadores estáticos lo sigue eligiendo por la misma razón — las variantes y el match vuelven los árboles de sintaxis una forma de datos nativa.
Sus ideas viajan más lejos que su cuota de mercado: F# nació como OCaml para .NET, ReasonML lo revistió para la gente de JavaScript, y js_of_ocaml lo compila para el navegador. La comunidad es chica, técnica y estable, con opam como gestor de paquetes y una cultura inusualmente rigurosa de diseño interfaz-primero vía archivos .mli.
De dónde viene
OCaml desciende del ML original — el metalenguaje de Robin Milner de los años 70 para probadores de teoremas — pasando por el Caml de INRIA (1985) y Caml Light. Xavier Leroy y el equipo Cristal publicaron Objective Caml en 1996, sumando una capa de objetos a un Caml rápido de código nativo; los objetos vieron uso modesto, pero la calidad del compilador y el sistema de módulos lo volvieron el ML serio.
Durante los 2000 se extendió de la investigación a la industria: Jane Street se estandarizó en él a inicios de esa década y creció hasta ser el inquilino ancla del ecosistema, mientras la academia lo mantuvo como lenguaje de implementación predilecto de asistentes de prueba y compiladores. El nombre se simplificó a OCaml, y opam (2013) más dune (2018) modernizaron la cadena de herramientas.
OCaml 5.0 (2022) aterrizó el cambio más grande de su historia: un runtime multinúcleo con manejadores de efectos, producto de casi una década de ingeniería de investigación, entregado sin romper el rendimiento secuencial del que la comunidad depende. El lenguaje sigue su cadencia estable, con las bibliotecas liberadas de Jane Street y la custodia de INRIA aún centrales.
Cómo se siente teclearlo
OCaml se escribe como matemática con acento Unix: let y -> y |> cargan la mayoría de las líneas, casi ninguna anotación sobrevive a la inferencia, y los brazos del match se alinean bajo barras verticales. Las fricciones distintivas son deliberadas: la aritmética de flotantes deletrea sus propios operadores (+. y /.), los refs se leen con ! y se escriben con :=, y los arreglos indexan con .(i). El vocabulario módulo-punto — List.fold_left, Option.value, Printf.printf — cae constante, y los comentarios (* *) cierran en pares. Terso, bajo en puntuación, alto en flechas.
29 pasos en 1 tours, desde lo básico hasta programas completos.