error/fail
Explicitly fail with an error value, like throw for the DSL
// 1. make an app
const app = mvfm(prelude, error);
// 2. make a program
const prog = app({ age: "number" }, ($) => {
const checked = $.cond($.gte($.input.age, 18))
.t($.concat("welcome, age ", $.show($.input.age)))
.f($.fail("must be 18+"));
return $.try(checked).catch((err) =>
$.concat("denied: ", err)
);
});
// 3. run
await fold(
defaults(app),
injectInput(prog, { age: 15 })
); Ctrl+Enter