Reason, also known as ReasonML, is a general-purpose, high-level, multi-paradigm, functional and object-oriented programming language and syntax extension and toolchain for OCaml created by Jordan Walke, who also created the React framework, at Facebook.[3][4] Reason uses many syntax elements from JavaScript, compiles to native code using OCaml's compiler toolchain, and can compile to JavaScript using the ReScript compiler.[5]
Paradigms | Multi-paradigm: functional, imperative, modular, object-oriented |
---|---|
Family | ML: Caml: OCaml |
Designed by | Jordan Walke |
First appeared | May 16, 2016[1] |
Stable release | 3.13.0[2]
/ October 21, 2024 |
License | MIT |
Filename extensions | .re, .rei |
Website | reasonml |
Influenced by | |
OCaml, JavaScript |
The Reason community officially provides ReasonReact as a solution for React-based web applications.[6]
BuckleScript and ReScript
editReason was originally compiled to JavaScript using the BuckleScript compiler,[7] which was created at Bloomberg L.P.
In 2020, the BuckleScript and Reason toolchain was rebranded to ReScript, essentially creating a separate language that had different syntax from Reason and only compiled to JavaScript.[8]
BuckleScript was forked to Melange[9] to continue to support compiling OCaml to JavaScript.
Example
edittype schoolPerson = Teacher | Director | Student(string);
let greeting = person =>
switch (person) {
| Teacher => "Hey Professor!"
| Director => "Hello Director."
| Student("Richard") => "Still here Ricky?"
| Student(anyOtherName) => "Hey, " ++ anyOtherName ++ "."
};
See also
edit- Elm – A functional language that uses an abstraction called ports to communicate with JavaScript
- PureScript – A strongly-typed, purely-functional programming language that compiles to JavaScript
References
edit- ^ "Simple, fast & type safe code that leverages the JavaScript & OCaml ecosystems: facebook/reason". GitHub. Facebook. 2019-03-23. Retrieved 2019-03-23.
- ^ "Release 3.13.0". 21 October 2024. Retrieved 27 October 2024.
- ^ "What is ReasonML?". 2ality. Retrieved 2019-03-23.
- ^ Rauschmayer, Axel (2018). Exploring ReasonML and functional programming. ReasonML Hub. Retrieved 2024-05-14.
- ^ "Overview: ReScript Documentation". rescript-lang.org. Retrieved 2020-08-10.
- ^ "ReasonReact". GitHub.
- ^ "BuckleScript". Bloomberg L.p. Retrieved 2022-09-11.
- ^ "BuckleScript & Reason Rebranding". rescript-lang. Retrieved 2022-09-11.
- ^ "ANN: Melange 1.0 – compile OCaml / ReasonML to JavaScript". OCaml. 2023-06-02. Retrieved 2024-05-24.