MVFM

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