typestar

Lenguajes

OCaml

Un lenguaje funcional de la familia ML, con inferencia de tipos, coincidencia de patrones y un sistema de módulos fuerte.

Practica OCaml

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.

Practica OCaml

29 pasos en 1 tours, desde lo básico hasta programas completos.

Documentación oficial

Otros lenguajes