2 import Control.Monad.X.ReaderT
5 local_return f x = local f (return x) === return x
6 local_bind f m1 m2 = (local f m1 >>= \x -> local f (m2 x)) === local f (m1 >>= m2)
7 local_local f g m = local f (local g m) === local (g . f) m
8 local_get f = local f get === fmap f get
10 get_bind m = (get >> m) === m