Lines Matching refs:StateT

26    , StateT(..)
59 type State g = StateT g Identity
107 newtype StateT g m a = StateT { getStateT :: g (m (a, Rep g)) } type
109 stateT :: Representable g => (Rep g -> m (a, Rep g)) -> StateT g m a
110 stateT = StateT . tabulate
112 runStateT :: Representable g => StateT g m a -> Rep g -> m (a, Rep g)
113 runStateT (StateT m) = index m
115 mapStateT :: Functor g => (m (a, Rep g) -> n (b, Rep g)) -> StateT g m a -> StateT g n b
116 mapStateT f (StateT m) = StateT (fmap f m)
122 evalStateT :: (Representable g, Monad m) => StateT g m a -> Rep g -> m a
131 execStateT :: (Representable g, Monad m) => StateT g m a -> Rep g -> m (Rep g)
136 instance (Functor g, Functor m) => Functor (StateT g m) where
137 fmap f = StateT . fmap (fmap (\ ~(a, s) -> (f a, s))) . getStateT
139 instance (Representable g, Bind m) => Apply (StateT g m) where
142 instance (Representable g, Functor m, Monad m) => Applicative (StateT g m) where
143 pure = StateT . leftAdjunctRep return
146 instance (Representable g, Bind m) => Bind (StateT g m) where
147 StateT m >>- f = StateT $ fmap (>>- rightAdjunctRep (runStateT . f)) m function
149 instance (Representable g, Monad m) => Monad (StateT g m) where
151 return = StateT . leftAdjunctRep return
153 StateT m >>= f = StateT $ fmap (>>= rightAdjunctRep (runStateT . f)) m function
155 instance Representable f => BindTrans (StateT f) where
158 instance Representable f => MonadTrans (StateT f) where
161 instance (Representable g, Monad m, Rep g ~ s) => MonadState s (StateT g m) where
163 put s = StateT $ pureRep $ return ((),s)
168 instance (Representable g, MonadReader e m) => MonadReader e (StateT g m) where
172 instance (Representable g, MonadWriter w m) => MonadWriter w (StateT g m) where
181 instance (Representable g, MonadCont m) => MonadCont (StateT g m) where
184 instance (Functor f, Representable g, MonadFree f m) => MonadFree f (StateT g m) where
197 ((a -> StateT g m b) -> StateT g m a) -> StateT g m a
200 runStateT (f (\a -> StateT $ pureRep $ c (a, s))) s
206 ((a -> StateT g m b) -> StateT g m a) -> StateT g m a