ReasonML (kurz Reason) ist eine Programmiersprache aus dem OCaml-Befehle-Ökosystem: Sie bietet die volle OCaml-Semantik (Typinferenz, Pattern Matching, Algebraische Datentypen, Unveränderlichkeit) mit einer an JavaScript und C angelehnten Syntax. Entwickelt wurde Reason ab 2015 von Jordan Walke bei Facebook, dem Erfinder von React.
Zwei Zielplattformen
ocaml / dune build # nativer Code über die OCaml-Toolchain
bsb init myapp # BuckleScript-Projekt für JavaScript erzeugen
npm run build # BuckleScript-Kompilierung über package.json
melange build # moderner BuckleScript-Nachfolger (dune/opam)
BuckleScript (von Hongbo Zhang, 2016) kompilierte Reason nach hochwertigem JavaScript und brachte die ReasonReact-Bindungen für React mit. Im Juli 2020 wurde BuckleScript zu ReScript umbenannt und entwickelte sich zu einer eigenen Sprache mit eigener Syntax (.res/.resi). ReasonML existiert weiterhin und wird heute oft mit Melange gebaut, das näher an der OCaml-Semantik bleibt und sich in opam/dune integriert.
Typische Kommandos
bsb -init -theme basic # Projektgerüst mit BuckleScript anlegen
bsb -w # Watch-Modus
bsb -make-world # alles bauen
opam install reason # Reason-Syntax über den OCaml-Paketmanager
esy install # npm-artige Abhängigkeiten für OCaml-Projekte
Verwandte Grundlagen: F#-Befehle (ML-Familie), JavaScript-Befehle und PureScript-Befehle — beide stark typisierten Sprachen, die nach JavaScript kompilieren. Ebenso der Nachfolger ReScript-Befehle (BuckleScript-Nachfolger, eigene Syntax) kompiliert nach JavaScript.