packages feed

has-transformers-0.1.0.0: src/Control/Monad/Trans/Has/State.hs

module Control.Monad.Trans.Has.State
  ( module Control.Monad.Trans.Has.State
  , module X
  ) where

import "transformers" Control.Monad.Trans.State.Strict
  qualified as State
import "transformers" Control.Monad.Trans.State.Strict
  as X (StateT(..))

import "this" Control.Monad.Trans.Has

type HasState s m = Has (StateT s) m

get :: HasState s m => m s
get = liftH State.get

put :: HasState s m => s -> m ()
put s = liftH $ State.put s