error/attempt
Wrap an expression in an Either-style result with ok and err fields
// 1. make an app
const app = mvfm(prelude, error);
// 2. make a program
const prog = app({ x: "number" }, ($) => {
const risky = $.cond($.gt($.input.x, 0))
.t($.mul($.input.x, 10))
.f($.fail("non-positive"));
return $.attempt(risky);
});
// 3. run
await fold(
defaults(app),
injectInput(prog, { x: -5 })
); Ctrl+Enter