error/try
Attempt an expression and recover from failure with a catch branch
// 1. make an app
const app = mvfm(prelude, error);
// 2. make a program
const prog = app({ x: "number" }, ($) => {
const risky = $.cond($.gt($.input.x, 10))
.t($.input.x)
.f($.fail("too small"));
return $.try(risky).catch((err) =>
$.concat("recovered: ", err)
);
});
// 3. run
await fold(
defaults(app),
injectInput(prog, { x: 3 })
); Ctrl+Enter