This chapter takes a brief look of a few key pieces of ReasonML that are still being worked on:
Better support for writing asynchronous code that is compatible with JavaScript Promises.
Better support for polymorphism. At the moment, different types mean different function or operator names for ReasonML (for example, there is +
for ints and +.
for floats). Haskell has type classes to solve this problem. A similar approach is being worked on for OCaml (and therefore ReasonML): modular implicits.
A better standard library. Many things are being explored in this area (see repository reasonml-community/belt). OCaml has a fair amount of fragmentation here, so standardization will be welcome.
Better support for Unicode. At the moment, OCaml has no support for Unicode whatsoever and OCaml characters are 8 bit in size. You can get some Unicode support via BuckleScript’s custom string literals (which compiles to JavaScript strings):
Js.log({js|äöü|js});
In the future, ReasonML may add more support for OCaml. They could, e.g., treat strings as UTF-8 with tool functions for accessing grapheme clusters and code points. Compilation to JavaScript will present challenges (e.g. accessing characters/units), because JavaScript is basically UTF-16.
Long(er) term, ReasonML also has a compelling story for multicore code, via OCaml’s algebraic effects.
For more information on what’s planned for ReasonML, consult its Frequently Asked Questions.
I’m excited about what’s in store. Better async support is especially important to me, as it will make Node.js development much more pleasant. Is there anything that you’d like to have that’s not on this list?