Interpret a list of effects of type M
Interpret a list of effects of type M
if the value X can be extracted call the continuation to get the next Eff[R, B] value otherwise provide a Eff[R, B] value
Interpret an effect of type M
Interpret an effect of type M
if the value X can be extracted call the continuation to get the next Eff[R, B] value otherwise provide a Eff[R, B] value
Interpret a side-effect of type M
Interpret a side-effect of type M
if the value X can be extracted call the continuation to get the next Eff[R, B] value otherwise provide a Eff[R, B] value
Interpret a pure value
Interpret eff values
For stack-safety reasons, the continuation must *never* be called with a value directly, but always with Eff.impure:
Eff.impure(a, continuation)
* *Note* it is the responsibility of the implementation to call continuation.onNone if the continuation is not used to create the return value.