macro_rules! stt_mdo {
(pure $e:expr) => { ... };
(lift $nested_monad:expr) => { ... };
(guard $boolean:expr ; $($rest:tt)*) => { ... };
(_ <- $monad:expr ; $($rest:tt)* ) => { ... };
($v:ident <- lift_iter $it:expr ; $($rest:tt)* ) => { ... };
(& $v:ident <- lift $nested_monad:expr ; $($rest:tt)* ) => { ... };
($v:ident <- lift $nested_monad:expr ; $($rest:tt)* ) => { ... };
(let $v:ident = $e:expr ; $($rest:tt)* ) => { ... };
($v:ident <- $monad:expr ; $($rest:tt)* ) => { ... };
($monad:expr ) => { ... };
}
macro for a StateT<'a, S, M, A>
monad transformer with a boxed (a -> m (a, s)) where M: Monad
;
It uses the type alias St in type annotations.