fact: Definition StateT_ap `{Monad m} {s : Type} {a b : Type} (f : StateT s m (a -> b)) (x : StateT s m a) : StateT s m b := fun st => join (f st <&> fun z => match z with | (f', st') => x st' <&> first f' end).
imports: Hask.Prelude Hask.Ltac Hask.Control.Monad Hask.Control.Monad.State Hask.Control.Monad.Trans.Class