Comp
Computation ADT: introduction and elimination forms for Pure | Impure.
impure
Create a suspended computation (OpCall constructor). Takes an effect and a continuation queue.
isPure
Test whether a computation is Pure. For hot-path conditionals where match would allocate.
match
Eliminate a computation by cases.
match comp { pure = a: ...; impure = effect: queue: ...; }
Every function that consumes a Computation should go through match or isPure — never inspect _tag directly.
pure
Lift a value into a pure computation (Return constructor).