MVFM

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