@@ -1,8 +1,15 @@
1+{-# OPTIONS_GHC -fno-warn-unrecognised-pragmas #-}
1{-# LANGUAGE MultiParamTypeClasses #-}
4{-# LANGUAGE MultiParamTypeClasses #-}
2{-# LANGUAGE FlexibleInstances #-}
5{-# LANGUAGE FlexibleInstances #-}
3{-# LANGUAGE UndecidableInstances #-}
6{-# LANGUAGE UndecidableInstances #-}
4{-# LANGUAGE FunctionalDependencies #-}
7{-# LANGUAGE FunctionalDependencies #-}
9+#if __GLASGOW_HASKELL__ < 710
10+{-# LANGUAGE OverlappingInstances #-}
6-- | See "Control.Monad.State.Class".
13-- | See "Control.Monad.State.Class".
8module Control.Monad.Ether.State.Class
15module Control.Monad.Ether.State.Class
@@ -11,6 +18,10 @@ module Control.Monad.Ether.State.Class
21+#if __GLASGOW_HASKELL__ < 710
14import Control.Monad.Trans (lift)
25import Control.Monad.Trans (lift)
16import Control.Monad.Trans.Ether.Reader (ReaderT)
27import Control.Monad.Trans.Ether.Reader (ReaderT)
@@ -18,6 +29,7 @@ import Control.Monad.Trans.Ether.Writer (WriterT)
18import Control.Monad.Trans.Ether.Except (ExceptT)
29import Control.Monad.Trans.Ether.Except (ExceptT)
19import qualified Control.Monad.Trans.Ether.State.Lazy as S.L
30import qualified Control.Monad.Trans.Ether.State.Lazy as S.L
20import qualified Control.Monad.Trans.Ether.State.Strict as S.S
31import qualified Control.Monad.Trans.Ether.State.Strict as S.S
32+import qualified Control.Ether.Util as Util
22-- for mtl instances
34-- for mtl instances
23import qualified Control.Monad.Trans.Cont as Trans (ContT)
35import qualified Control.Monad.Trans.Cont as Trans (ContT)
@@ -58,7 +70,7 @@ modify t f = state t (\s -> ((), f s))
59-- | Gets specific component of the state, using a projection function supplied.
71-- | Gets specific component of the state, using a projection function supplied.
60gets :: MonadState tag s m => proxy tag -> (s -> a) -> m a
72gets :: MonadState tag s m => proxy tag -> (s -> a) -> m a
61−gets t f = fmap f (get t)
73+gets t f = Util.fmap f (get t)
63instance {-# OVERLAPPING #-} Monad m => MonadState tag s (S.L.StateT tag s m) where
75instance {-# OVERLAPPING #-} Monad m => MonadState tag s (S.L.StateT tag s m) where
64 get = S.L.get
76 get = S.L.get