Reference
Auto-generated API reference from nix-effects source.

Adapt

Handler context transformation. Contravariant on context, covariant on continuation.

adapt

Transform a handler's state context.

adapt : { get : P -> S, set : P -> S -> P } -> Handler<S> -> Handler<P>

Wraps a handler that works with child state S so it works with parent state P, using a get/set lens. Propagates both resume and abort.

counterHandler = { param, state }: { resume = null; state = state + param; };
adapted = adapt { get = s: s.counter; set = s: c: s // { counter = c; }; } counterHandler;
# adapted now works with { counter = 0; logs = []; } state

adaptHandlers

Adapt an entire handler set (attrset of handlers) to a different state context. Applies the same get/set lens to every handler in the set.

stateHandlers = {
  get = { param, state }: { value = state; inherit state; };
  put = { param, state }: { value = null; state = param; };
};
adapted = adaptHandlers { get = s: s.data; set = s: d: s // { data = d; }; } stateHandlers;