Navigation

Former

mkBuilderKind { name, base, builderOps, runtimeOps, stateSpec } derives the operation coproduct surface (Eff, Resp, reviewOp, opNames, injectorsWith, dispatch) and the state ornament (State, forget, forgetWith) from one argument tuple, so the op side and the state side cannot drift. The derived forget is op-blind: it never depends on the operation datatypes, so it is operations-preserving by construction.