macro_rules! rdrt_mdo {
(lift $nested_monad:expr ) => { ... };
(guard $boolean:expr ; $($rest:tt)*) => { ... };
(_ <- $monad:expr ; $($rest:tt)* ) => { ... };
($v:ident <- lift $nested_monad:expr ; $($rest:tt)* ) => { ... };
($v:ident <- $monad:expr ; $($rest:tt)* ) => { ... };
($monad:expr ) => { ... };
}
macro for a ReaderT transformer with a boxed (env -> Monad)