import * as T from "../../Task/_core"; import { makeContinue, makeDone } from "./constructors"; import type { Decision } from "./Decision"; export const map_ = (fa: Decision, f: (a: A) => B): Decision => { switch (fa._tag) { case "Done": return makeDone(f(fa.out)); case "Continue": return makeContinue(f(fa.out), fa.interval, (n, i) => T.map_(fa.next(n, i), (a) => map_(a, f))); } }; export const map = (f: (a: A) => B) => (fa: Decision): Decision => map_(fa, f);