@@ -11,16 +11,16 @@
1111{-# LANGUAGE RankNTypes #-}
1212{-# LANGUAGE GeneralizedNewtypeDeriving #-}
1313module Control.Monad.Ether.State
14− ( EtherStateT
15− , EtherState
14+ ( StateT
15+ , State
1616 , StateT'
1717 , State'
18− , runEtherStateT
19− , runEtherState
20− , evalEtherStateT
21− , evalEtherState
22− , execEtherStateT
23− , execEtherState
18+ , runStateT
19+ , runState
20+ , evalStateT
21+ , evalState
22+ , execStateT
23+ , execState
2424 , runStateT'
2525 , runState'
2626 , evalStateT'
@@ -28,12 +28,12 @@ module Control.Monad.Ether.State
2828 , execStateT'
2929 , execState'
3030 --
31− , MonadEtherState
32− , etherGet
33− , etherGets
34− , etherPut
35− , etherState
36− , etherModify
31+ , MonadState
32+ , get
33+ , gets
34+ , put
35+ , state
36+ , modify
3737 --
3838 , MonadState'
3939 , get'
@@ -46,7 +46,7 @@ module Control.Monad.Ether.State
4646import Data.Proxy (Proxy(Proxy))
4747import Control.Monad.Trans (lift)
4848
49−import Control.Monad.Trans.Ether.Reader (EtherReaderT)
49+import Control.Monad.Trans.Ether.Reader (ReaderT)
5050import Control.Monad.Trans.Ether.State
5151
5252-- for mtl instances
@@ -61,110 +61,110 @@ import qualified Control.Monad.Trans.State.Strict as Trans.Strict (StateT)
6161import qualified Control.Monad.Trans.Writer.Lazy as Trans.Lazy (WriterT)
6262import qualified Control.Monad.Trans.Writer.Strict as Trans.Strict (WriterT)
6363
64−class Monad m => MonadEtherState tag s m | m tag -> s where
64+class Monad m => MonadState tag s m | m tag -> s where
6565
66− {-# MINIMAL etherState | etherGet, etherPut #-}
66+ {-# MINIMAL state | get, put #-}
6767
68− etherGet :: proxy tag -> m s
69− etherGet proxy = etherState proxy (\s -> (s, s))
68+ get :: proxy tag -> m s
69+ get proxy = state proxy (\s -> (s, s))
7070
71− etherPut :: proxy tag -> s -> m ()
72− etherPut proxy s = etherState proxy (\_ -> ((), s))
71+ put :: proxy tag -> s -> m ()
72+ put proxy s = state proxy (\_ -> ((), s))
7373
74− etherState :: proxy tag -> (s -> (a, s)) -> m a
75− etherState proxy f = do
76− s <- etherGet proxy
74+ state :: proxy tag -> (s -> (a, s)) -> m a
75+ state proxy f = do
76+ s <- get proxy
7777 let ~(a, s') = f s
78− etherPut proxy s'
78+ put proxy s'
7979 return a
8080
81−etherGets :: MonadEtherState tag s m => proxy tag -> (s -> a) -> m a
82−etherGets proxy f = fmap f (etherGet proxy)
81+gets :: MonadState tag s m => proxy tag -> (s -> a) -> m a
82+gets proxy f = fmap f (get proxy)
8383
84−etherModify :: MonadEtherState tag s m => proxy tag -> (s -> s) -> m ()
85−etherModify proxy f = etherState proxy $ \ s -> ((), f s)
84+modify :: MonadState tag s m => proxy tag -> (s -> s) -> m ()
85+modify proxy f = state proxy $ \ s -> ((), f s)
8686
87−type MonadState' s = MonadEtherState s s
87+type MonadState' s = MonadState s s
8888
8989get' :: forall m s . MonadState' s m => m s
90−get' = etherGet (Proxy :: Proxy s)
90+get' = get (Proxy :: Proxy s)
9191
9292gets' :: forall m s a . MonadState' s m => (s -> a) -> m a
93−gets' = etherGets (Proxy :: Proxy s)
93+gets' = gets (Proxy :: Proxy s)
9494
9595put' :: forall m s . MonadState' s m => s -> m ()
96−put' = etherPut (Proxy :: Proxy s)
96+put' = put (Proxy :: Proxy s)
9797
9898state' :: forall m s a . MonadState' s m => (s -> (a, s)) -> m a
99−state' = etherState (Proxy :: Proxy s)
99+state' = state (Proxy :: Proxy s)
100100
101101modify' :: forall m s . MonadState' s m => (s -> s) -> m ()
102−modify' = etherModify (Proxy :: Proxy s)
102+modify' = modify (Proxy :: Proxy s)
103103
104−instance {-# OVERLAPPING #-} Monad m => MonadEtherState tag s (EtherStateT tag s m) where
105− etherGet proxy = etherStateT proxy (\s -> return (s, s))
106− etherPut proxy s = etherStateT proxy (\_ -> return ((), s))
104+instance {-# OVERLAPPING #-} Monad m => MonadState tag s (StateT tag s m) where
105+ get proxy = etherStateT proxy (\s -> return (s, s))
106+ put proxy s = etherStateT proxy (\_ -> return ((), s))
107107
108−instance (MonadEtherState tag s m) => MonadEtherState tag s (EtherStateT tag' s' m) where
109− etherGet proxy = lift (etherGet proxy)
110− etherPut proxy = lift . etherPut proxy
111− etherState proxy = lift . etherState proxy
108+instance (MonadState tag s m) => MonadState tag s (StateT tag' s' m) where
109+ get proxy = lift (get proxy)
110+ put proxy = lift . put proxy
111+ state proxy = lift . state proxy
112112
113113-- Instances for other tagged transformers
114114
115−instance (MonadEtherState tag s m) => MonadEtherState tag s (EtherReaderT tag' r m) where
116− etherGet proxy = lift (etherGet proxy)
117− etherPut proxy = lift . etherPut proxy
118− etherState proxy = lift . etherState proxy
115+instance (MonadState tag s m) => MonadState tag s (ReaderT tag' r m) where
116+ get proxy = lift (get proxy)
117+ put proxy = lift . put proxy
118+ state proxy = lift . state proxy
119119
120120-- Instances for mtl transformers
121121
122−instance MonadEtherState tag s m => MonadEtherState tag s (Trans.ContT r m) where
123− etherGet proxy = lift (etherGet proxy)
124− etherPut proxy = lift . etherPut proxy
125− etherState proxy = lift . etherState proxy
126−
127−instance MonadEtherState tag s m => MonadEtherState tag s (Trans.ExceptT e m) where
128− etherGet proxy = lift (etherGet proxy)
129− etherPut proxy = lift . etherPut proxy
130− etherState proxy = lift . etherState proxy
131−
132−instance MonadEtherState tag s m => MonadEtherState tag s (Trans.IdentityT m) where
133− etherGet proxy = lift (etherGet proxy)
134− etherPut proxy = lift . etherPut proxy
135− etherState proxy = lift . etherState proxy
136−
137−instance MonadEtherState tag s m => MonadEtherState tag s (Trans.ListT m) where
138− etherGet proxy = lift (etherGet proxy)
139− etherPut proxy = lift . etherPut proxy
140− etherState proxy = lift . etherState proxy
141−
142−instance MonadEtherState tag s m => MonadEtherState tag s (Trans.MaybeT m) where
143− etherGet proxy = lift (etherGet proxy)
144− etherPut proxy = lift . etherPut proxy
145− etherState proxy = lift . etherState proxy
146−
147−instance MonadEtherState tag s m => MonadEtherState tag s (Trans.ReaderT r m) where
148− etherGet proxy = lift (etherGet proxy)
149− etherPut proxy = lift . etherPut proxy
150− etherState proxy = lift . etherState proxy
151−
152−instance MonadEtherState tag s m => MonadEtherState tag s (Trans.Lazy.StateT s' m) where
153− etherGet proxy = lift (etherGet proxy)
154− etherPut proxy = lift . etherPut proxy
155− etherState proxy = lift . etherState proxy
156−
157−instance MonadEtherState tag s m => MonadEtherState tag s (Trans.Strict.StateT s' m) where
158− etherGet proxy = lift (etherGet proxy)
159− etherPut proxy = lift . etherPut proxy
160− etherState proxy = lift . etherState proxy
161−
162−instance (Monoid w, MonadEtherState tag s m) => MonadEtherState tag s (Trans.Lazy.WriterT w m) where
163− etherGet proxy = lift (etherGet proxy)
164− etherPut proxy = lift . etherPut proxy
165− etherState proxy = lift . etherState proxy
166−
167−instance (Monoid w, MonadEtherState tag s m) => MonadEtherState tag s (Trans.Strict.WriterT w m) where
168− etherGet proxy = lift (etherGet proxy)
169− etherPut proxy = lift . etherPut proxy
170− etherState proxy = lift . etherState proxy
122+instance MonadState tag s m => MonadState tag s (Trans.ContT r m) where
123+ get proxy = lift (get proxy)
124+ put proxy = lift . put proxy
125+ state proxy = lift . state proxy
126+
127+instance MonadState tag s m => MonadState tag s (Trans.ExceptT e m) where
128+ get proxy = lift (get proxy)
129+ put proxy = lift . put proxy
130+ state proxy = lift . state proxy
131+
132+instance MonadState tag s m => MonadState tag s (Trans.IdentityT m) where
133+ get proxy = lift (get proxy)
134+ put proxy = lift . put proxy
135+ state proxy = lift . state proxy
136+
137+instance MonadState tag s m => MonadState tag s (Trans.ListT m) where
138+ get proxy = lift (get proxy)
139+ put proxy = lift . put proxy
140+ state proxy = lift . state proxy
141+
142+instance MonadState tag s m => MonadState tag s (Trans.MaybeT m) where
143+ get proxy = lift (get proxy)
144+ put proxy = lift . put proxy
145+ state proxy = lift . state proxy
146+
147+instance MonadState tag s m => MonadState tag s (Trans.ReaderT r m) where
148+ get proxy = lift (get proxy)
149+ put proxy = lift . put proxy
150+ state proxy = lift . state proxy
151+
152+instance MonadState tag s m => MonadState tag s (Trans.Lazy.StateT s' m) where
153+ get proxy = lift (get proxy)
154+ put proxy = lift . put proxy
155+ state proxy = lift . state proxy
156+
157+instance MonadState tag s m => MonadState tag s (Trans.Strict.StateT s' m) where
158+ get proxy = lift (get proxy)
159+ put proxy = lift . put proxy
160+ state proxy = lift . state proxy
161+
162+instance (Monoid w, MonadState tag s m) => MonadState tag s (Trans.Lazy.WriterT w m) where
163+ get proxy = lift (get proxy)
164+ put proxy = lift . put proxy
165+ state proxy = lift . state proxy
166+
167+instance (Monoid w, MonadState tag s m) => MonadState tag s (Trans.Strict.WriterT w m) where
168+ get proxy = lift (get proxy)
169+ put proxy = lift . put proxy
170+ state proxy = lift . state proxy