What is it? Take your pick:
- do notation for fantasy-land javascript.
- co for monads.
- async/await for chainables.
It allows you take take this code:
const div = (b === 0) ? Nothing() : Just(a / b)
const result = div(8, 2)
.map(a => a + 2)
.chain(b => div(b, 2))
}
And write it like this:
const mdo = require('fantasy-do')
const result = mdo(function * () {
const a = yield div(8, 2)
b = a + 2
return div(b, 2)
})