ReasonML / BuckleScript JavaScript Interop
JavaScript interop in ReasonML / BuckleScript looks intimidating in the beginning but after some time you learn to love it.
I'm quite amazed by it. The following ReasonML code:
[@bs.module]
external fetch : string => Js.Promise.t('a) = "isomorphic-unfetch";
fetch(url)
|> Js.Promise.then_(response => Js.Promise.resolve(response##text()))
|> Js.Promise.then_(data => Js.Promise.resolve(Js.log(data)));
produces this JavaScript:
var IsomorphicUnfetch = require("isomorphic-unfetch");
IsomorphicUnfetch(url).then((function (response) {
return Promise.resolve(response.text());
})).then((function (data) {
return Promise.resolve((console.log(data), /* () */0));
}));