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.