:: [a] package:fused-effects

Look up the previous accumulation
runAccum w look = return (w, w)
runAccum w (look >>= continuation) = runAccum w (continuation w)
Fail the current branch, and prevent backtracking within the nearest enclosing call (if any). Contrast with empty, which fails the current branch but allows backtracking.
cutfail >>= k = cutfail
cutfail <|> m = cutfail
Abort the computation. empty annihilates >>=:
empty >>= k = empty
Retrieve the environment value.
runReader a (ask >>= k) = runReader a (k a)
Get the current state value.
runState a (get >>= k) = runState a (k a)