Would you like to clone this notebook?

When you clone a notebook you are able to make changes without affecting the original notebook.

Cancel

State Machines with Tagged Unions in JS

node v18.11.0
version: 2.0.0
endpointsharetweet
const { stringify, parse } = require("serialize-daggy"); const { taggedSum, tagged } = require("daggy"); const { curry, pipe } = require("ramda"); const cataDaggy = curry((T, spec) => T.cata(spec)); // Simple State Machine: // Begin[] --forward(x)--> End["result"] // | | // <------ reset ------ const Simple = taggedSum("Simple", { End: ["result"], Begin: ["item"] }), { Begin, End } = Simple, transitions = { forward: { Begin: x => Simple.End(x), End: result => End(result) }, reset: { Begin: _ => Begin(_), End: result => Begin(null) } }, s0 = Begin(null); console.log(String(Simple.Begin(0))); console.log(cataDaggy(s0, transitions["forward"]).toString());
Loading…

no comments

    sign in to comment