Reasons for Reason

  • TypeScript

  • Elm

  • ReasonML

  • JavaScript

Reasons for Reason

  • Strong type system

  • Good, ergonomic type inference

  • Sound types

  • Small, easy to reason about

If it compiles

it runs

(without error)


Reasons for Reason

Reasons for Reason

  • Native support is slated

  • Tooling is surprisingly good

  • Designed for production use

  • Designed for adoptability

Code Samples


(so far)

  • Compile and iteration time is amazing

  • The type system is at a nice sweet spot

    • Inference generally just works

    • If it compiles it runs

    • If it doesn't compile, it caught a bug

  • Compiled output is readable, small, and structured similarly to the source


(so far)

  • Get to use OCaml, Reason, and JS ecosystems

  • Often have to keep all of those layers in your head simultaneously


(so far)

  • `optional` chaining requires more boilerplate than I'd like

  • Impossible to have `undefined is not a function` errors


(so far)

  • Some things that require a library in JS are just language features

    • Routing ⇒ pattern matching

    • Component composition

    • State management


(so far)

  • Some things are irritating

    • The autoformatter is fiddly

      • Comments

      • Test blocks

    • JSX requires boilerplate

      • <p>{React.string(string_of_int(5)}</p>


(so far)

  • Compile step has benefits

    • Optimizations

    • Dead function and module removal

    • Amenable to tree-shaking

    • Produces engine-friendly JS code

  • I've found it promising

  • Planning for one more experiment before pushing for adoption at work

  • Try it out!

Reason & React

By James Dabbs

Reason & React

A short overview of ReasonML and ReasonReact for the Santa Barbara JavaScript meetup

  • 1,127