@@ -9,6 +9,7 @@
9{-# LANGUAGE FlexibleInstances #-}
9{-# LANGUAGE FlexibleInstances #-}
10{-# LANGUAGE UndecidableInstances #-}
10{-# LANGUAGE UndecidableInstances #-}
11{-# LANGUAGE FunctionalDependencies #-}
11{-# LANGUAGE FunctionalDependencies #-}
12+{-# LANGUAGE TypeFamilies #-}
12{-# LANGUAGE PolyKinds #-}
13{-# LANGUAGE PolyKinds #-}
14-- | See "Control.Monad.State.Class".
15-- | See "Control.Monad.State.Class".
@@ -53,12 +54,12 @@ modify t f = state t (\s -> ((), f s))
53gets :: MonadState tag s m => proxy tag -> (s -> a) -> m a
54gets :: MonadState tag s m => proxy tag -> (s -> a) -> m a
54gets t f = Util.fmap f (get t)
55gets t f = Util.fmap f (get t)
56−instance Monad m => MonadState tag s (S.L.StateT tag s m) where
57+instance (Monad m, s ~ s') => MonadState tag s (S.L.StateT tag s' m) where
57 get = S.L.get
58 get = S.L.get
58 put = S.L.put
59 put = S.L.put
59 state = S.L.state
60 state = S.L.state
61−instance Monad m => MonadState tag s (S.S.StateT tag s m) where
62+instance (Monad m, s ~ s') => MonadState tag s (S.S.StateT tag s' m) where
62 get = S.S.get
63 get = S.S.get
63 put = S.S.put
64 put = S.S.put
64 state = S.S.state
65 state = S.S.state