diff --git a/System/Console/Haskeline/Monads.hs b/System/Console/Haskeline/Monads.hs index 1dd58dd1453744e93d5b5d567446e52f374668d9..54e8693ae2dc65aa4656a1e2864faa5d50b889f5 100644 --- a/System/Console/Haskeline/Monads.hs +++ b/System/Console/Haskeline/Monads.hs @@ -6,6 +6,7 @@ module System.Console.Haskeline.Monads( asks, StateT(..), evalStateT', + gets, modify, update, MonadReader(..), @@ -17,7 +18,7 @@ import System.Console.Haskeline.MonadException import Control.Monad.Reader hiding (MonadReader,ask,asks,local) import qualified Control.Monad.Reader as Reader -import Control.Monad.State hiding (MonadState,get,put,modify) +import Control.Monad.State hiding (MonadState,get,put,gets,modify) import qualified Control.Monad.State as State class Monad m => MonadReader r m where @@ -47,6 +48,8 @@ instance (MonadState s m, MonadTrans t, Monad (t m)) => MonadState s (t m) where get = lift get put = lift . put +gets :: MonadState s m => (s -> a) -> m a +gets f = liftM f get modify :: MonadState s m => (s -> s) -> m () modify f = get >>= put . f