Reason , también conocido como ReasonML , es un lenguaje de programación y un conjunto de herramientas que forma parte del ecosistema del lenguaje de programación OCaml . Reason utiliza muchos elementos de sintaxis de JavaScript , compila a código nativo usando el conjunto de herramientas de compilación de OCaml y puede compilar a JavaScript usando el compilador Melange . [ 3 ]
Características del lenguaje
Dado que Reason es una sintaxis alternativa a OCaml, comparten las mismas características. Ambos lenguajes son de propósito general , [ 4 ] funcionales y orientados a objetos . [ 5 ]
Si bien Reason compila a código nativo mediante el conjunto de herramientas de OCaml, se diferencia específicamente en su sintaxis, mensajes de error y herramientas de edición. Esto permite que Reason brinde a los desarrolladores una experiencia más similar a la de JavaScript o TypeScript .
La sintaxis de Reason es más similar a JavaScript y otros lenguajes de estilo C que a OCaml. Por ejemplo, Reason tiende a usar llaves para delimitar bloques [ 6 ] y punto y coma para separar sentencias [ 7 ], mientras que OCaml usa principalmente paréntesis o la palabra clave begin/ endpara delimitar bloques [ 8 ] , sin nada que separe las declaraciones. Reason también define funciones mediante una sintaxis similar a una flecha (en lugar de funla palabra clave de OCaml) [ 6 ] , y llamar a una función requiere paréntesis alrededor de sus argumentos [ 9 ] . Otras diferencias notables incluyen el nombre de la palabra clave de coincidencia de patronesswitch (en lugar de match) [ 10 ] y el reformateo de los mensajes de error para que sean más familiares para los programadores de JavaScript [ 11 ] .
La comunidad de Reason proporciona oficialmente ReasonReact como una solución para aplicaciones web basadas en el framework React . [ 12 ] [ 13 ]
Ejemplo
tipo schoolPerson = Profesor | Director | Estudiante ( cadena );let saludo = persona => switch ( persona ) { | Profesor => "¡Hola, profesor!" | Director => "Hola, director." | Estudiante ( "Richard" ) => "¿Sigues aquí, Ricky?" | Estudiante ( cualquierOtroNombre ) => "Hola, " ++ cualquierOtroNombre ++ "." };Historia
Jordan Walke, creador del framework web React , lanzó Reason por primera vez en 2016 mientras trabajaba en Facebook . [ 1 ] [ 14 ] [ 15 ]
En ese mismo año, Bloomberg LP presentó BuckleScript, un compilador que compilaba OCaml a JavaScript. [ 16 ] Como ambos proyectos estaban influenciados por JavaScript, Reason y BuckleScript pronto se convirtieron en una cadena de herramientas integrada, lo que permitió a Reason dirigirse a JavaScript. [ 17 ] [ 18 ]
Sin embargo, el equipo de Reason y el equipo de BuckleScript tenían prioridades diferentes. El equipo de Reason quería mantener la compatibilidad con el ecosistema OCaml, mientras que el equipo de BuckleScript quería poder cambiar la sintaxis para brindar la mejor experiencia de desarrollo a los programadores de JavaScript. [ 18 ]
En 2020, BuckleScript introdujo una nueva sintaxis que comenzó a divergir de Reason. [ 19 ] Un mes después, el equipo de BuckleScript cambió el nombre de su conjunto de herramientas a ReScript , para centrarse exclusivamente en el ecosistema de JavaScript y convertirse esencialmente en su propio lenguaje, distinto de Reason. [ 20 ] [ 21 ]
Para mantener la capacidad de Reason de trabajar con JavaScript, António Monteiro bifurcó una versión de BuckleScript antes de que se renombrara como ReScript y la modificó para acercarla al ecosistema de OCaml. La bifurcación, llamada Melange, lanzó su primera versión estable en 2023. [ 22 ] [ 23 ]
Véase también
- Elm : un lenguaje funcional que utiliza una abstracción llamada puertos para comunicarse con JavaScript.
- PureScript : un lenguaje de programación funcional y fuertemente tipado que se compila a JavaScript.
Referencias
- 1 2 Walke, Jordan (16 de mayo de 2016). "Versión inicial: reasonml/reason" . GitHub . Recuperado el 22 de diciembre de 2025 .
- ↑ "Versión 3.18.0" . 23 de junio de 2026. Consultado el 24 de junio de 2026 .
- ↑ "Melange" . Documentación de Reason . Consultado el 20 de diciembre de 2025 .
- ↑ Rafatpanah, Raphael; D'mello, Bruno Joseph (28 de febrero de 2019). Guía de inicio rápido de ReasonML . Packt Publishing. pág. 6.
- ↑ Eisenberg, J. David (9 de abril de 2019). Desarrollo web con ReasonML . Pragmatic Bookshelf. pág. 170.
- 1 2 Eisenberg 2019 , pág. 15.
- ↑ Eisenberg 2019 , págs. 1–4.
- ↑ "El lenguaje OCaml - Expresiones entre paréntesis" . ocaml.org . Consultado el 30 de septiembre de 2025 .
- ↑ De Simone, Sergio (10 de noviembre de 2017). "Facebook renueva la sintaxis de ReasonML en Reason 3" . InfoQ . C4Media . Consultado el 3 de enero de 2026 .
- ↑ Rafatpanah y D'mello 2019 , pág. 17.
- ↑ "¡Mensajes de error mucho, mucho, mucho mejores!" . Reason . 25 de agosto de 2017 . Consultado el 3 de enero de 2026 .
- ↑ Página principal de ReasonReact
- ↑ Rafatpanah y D'mello 2019 , pág. 1.
- ↑ ReasonConf (29 de noviembre de 2019). Jordan Walke - React to the Future (video) . Recuperado el 21 de diciembre de 2025 – vía YouTube.
- ↑ "Motivo" . Facebook. Archivado del original el 17 de mayo de 2016.
- ↑ "BuckleScript: ¡Ya está aquí la versión 1.0!" . Bloomberg . 8 de septiembre de 2016 . Consultado el 21 de diciembre de 2025 .
- ↑ "Por qué Melange" . Sitio de documentación de Melange . Consultado el 21 de diciembre de 2025 .
- 1 2 Zhang, Hongbo (7 de febrero de 2021). "Una breve historia de ReScript (BuckleScript)" . Discurso de OCaml . Recuperado el 21 de diciembre de 2025 .
- ↑ Lou, Cheng (1 de julio de 2020). "Una nueva sintaxis para BuckleScript" . ReScript . Recuperado el 21 de diciembre de 2025 .
- ↑ Equipo de ReScript (10 de agosto de 2020). "Cambio de marca de BuckleScript y Reason" . ReScript . Consultado el 11 de septiembre de 2022 .
- ↑ Yang, Danny (diciembre de 2022). "Introducción". Introducción a ReScript: Programación funcional para aplicaciones web . Apress.
- ↑ Monteiro, António (2 de junio de 2023). "ANN: Melange 1.0 – compilación de OCaml / ReasonML a JavaScript" . OCaml . Consultado el 24 de mayo de 2024 .
- ↑ Monteiro, António (2 de junio de 2023). "Melange 1.0 ya está aquí" . Consultado el 21 de diciembre de 2025 .
Enlaces externos
- Sitio web oficial

- Organización del proyecto Reason en GitHub
- Sitio de documentación de Melange
- ReasonReact
- Software libre multiplataforma
- Lenguajes de programación con sintaxis extensible
- Compiladores libres y de código abierto
- Lenguajes funcionales
- Lenguajes de programación orientados a objetos
- Familia de lenguajes de programación ML
- Familia de lenguajes de programación OCaml
- Lenguajes de programación que coinciden con patrones
- Lenguajes de programación de tipado estático
- Lenguajes de programación creados en 2016
- Lenguajes de programación de alto nivel
- Software que utiliza la licencia MIT.