runAccum w look = return (w, w) runAccum w (look >>= continuation) = runAccum w (continuation w)
cutfail >>= k = cutfail
cutfail <|> m = cutfail
empty >>= k = empty
runReader a (ask >>= k) = runReader a (k a)
runState a (get >>= k) = runState a (k a)
mzero >>= f = mzero v >> mzero = mzero
mzero = empty