@@ -11,16 +11,16 @@
11{-# LANGUAGE RankNTypes #-}
11{-# LANGUAGE RankNTypes #-}
12{-# LANGUAGE GeneralizedNewtypeDeriving #-}
12{-# LANGUAGE GeneralizedNewtypeDeriving #-}
13module Control.Monad.Ether.State
13module Control.Monad.Ether.State
14− ( EtherStateT
14+ ( StateT
15− , EtherState
15+ , State
18− , runEtherStateT
18+ , runStateT
19− , runEtherState
19+ , runState
20− , evalEtherStateT
20+ , evalStateT
21− , evalEtherState
21+ , evalState
22− , execEtherStateT
22+ , execStateT
23− , execEtherState
23+ , execState
24 , runStateT'
24 , runStateT'
25 , runState'
25 , runState'
26 , evalStateT'
26 , evalStateT'
@@ -28,12 +28,12 @@ module Control.Monad.Ether.State
28 , execStateT'
28 , execStateT'
29 , execState'
29 , execState'
31− , MonadEtherState
31+ , MonadState
33− , etherGets
33+ , gets
35− , etherState
35+ , state
36− , etherModify
36+ , modify
38 , MonadState'
38 , MonadState'
@@ -46,7 +46,7 @@ module Control.Monad.Ether.State
46import Data.Proxy (Proxy(Proxy))
46import Data.Proxy (Proxy(Proxy))
47import Control.Monad.Trans (lift)
47import Control.Monad.Trans (lift)
49−import Control.Monad.Trans.Ether.Reader (EtherReaderT)
49+import Control.Monad.Trans.Ether.Reader (ReaderT)
50import Control.Monad.Trans.Ether.State
50import Control.Monad.Trans.Ether.State
52-- for mtl instances
52-- for mtl instances
@@ -61,110 +61,110 @@ import qualified Control.Monad.Trans.State.Strict as Trans.Strict (StateT)
61import qualified Control.Monad.Trans.Writer.Lazy as Trans.Lazy (WriterT)
61import qualified Control.Monad.Trans.Writer.Lazy as Trans.Lazy (WriterT)
62import qualified Control.Monad.Trans.Writer.Strict as Trans.Strict (WriterT)
62import qualified Control.Monad.Trans.Writer.Strict as Trans.Strict (WriterT)
64−class Monad m => MonadEtherState tag s m | m tag -> s where
64+class Monad m => MonadState tag s m | m tag -> s where
66− {-# MINIMAL etherState | etherGet, etherPut #-}
66+ {-# MINIMAL state | get, put #-}
68− etherGet :: proxy tag -> m s
68+ get :: proxy tag -> m s
69− etherGet proxy = etherState proxy (\s -> (s, s))
69+ get proxy = state proxy (\s -> (s, s))
71− etherPut :: proxy tag -> s -> m ()
71+ put :: proxy tag -> s -> m ()
72− etherPut proxy s = etherState proxy (\_ -> ((), s))
72+ put proxy s = state proxy (\_ -> ((), s))
74− etherState :: proxy tag -> (s -> (a, s)) -> m a
74+ state :: proxy tag -> (s -> (a, s)) -> m a
75− etherState proxy f = do
75+ state proxy f = do
76− s <- etherGet proxy
76+ s <- get proxy
77 let ~(a, s') = f s
77 let ~(a, s') = f s
78− etherPut proxy s'
78+ put proxy s'
81−etherGets :: MonadEtherState tag s m => proxy tag -> (s -> a) -> m a
81+gets :: MonadState tag s m => proxy tag -> (s -> a) -> m a
82−etherGets proxy f = fmap f (etherGet proxy)
82+gets proxy f = fmap f (get proxy)
84−etherModify :: MonadEtherState tag s m => proxy tag -> (s -> s) -> m ()
84+modify :: MonadState tag s m => proxy tag -> (s -> s) -> m ()
85−etherModify proxy f = etherState proxy $ \ s -> ((), f s)
85+modify proxy f = state proxy $ \ s -> ((), f s)
87−type MonadState' s = MonadEtherState s s
87+type MonadState' s = MonadState s s
89get' :: forall m s . MonadState' s m => m s
89get' :: forall m s . MonadState' s m => m s
90−get' = etherGet (Proxy :: Proxy s)
90+get' = get (Proxy :: Proxy s)
92gets' :: forall m s a . MonadState' s m => (s -> a) -> m a
92gets' :: forall m s a . MonadState' s m => (s -> a) -> m a
93−gets' = etherGets (Proxy :: Proxy s)
93+gets' = gets (Proxy :: Proxy s)
95put' :: forall m s . MonadState' s m => s -> m ()
95put' :: forall m s . MonadState' s m => s -> m ()
96−put' = etherPut (Proxy :: Proxy s)
96+put' = put (Proxy :: Proxy s)
98state' :: forall m s a . MonadState' s m => (s -> (a, s)) -> m a
98state' :: forall m s a . MonadState' s m => (s -> (a, s)) -> m a
99−state' = etherState (Proxy :: Proxy s)
99+state' = state (Proxy :: Proxy s)
101modify' :: forall m s . MonadState' s m => (s -> s) -> m ()
101modify' :: forall m s . MonadState' s m => (s -> s) -> m ()
102−modify' = etherModify (Proxy :: Proxy s)
102+modify' = modify (Proxy :: Proxy s)
104−instance {-# OVERLAPPING #-} Monad m => MonadEtherState tag s (EtherStateT tag s m) where
104+instance {-# OVERLAPPING #-} Monad m => MonadState tag s (StateT tag s m) where
105− etherGet proxy = etherStateT proxy (\s -> return (s, s))
105+ get proxy = etherStateT proxy (\s -> return (s, s))
106− etherPut proxy s = etherStateT proxy (\_ -> return ((), s))
106+ put proxy s = etherStateT proxy (\_ -> return ((), s))
108−instance (MonadEtherState tag s m) => MonadEtherState tag s (EtherStateT tag' s' m) where
108+instance (MonadState tag s m) => MonadState tag s (StateT tag' s' m) where
109− etherGet proxy = lift (etherGet proxy)
109+ get proxy = lift (get proxy)
110− etherPut proxy = lift . etherPut proxy
110+ put proxy = lift . put proxy
111− etherState proxy = lift . etherState proxy
111+ state proxy = lift . state proxy
113-- Instances for other tagged transformers
113-- Instances for other tagged transformers
115−instance (MonadEtherState tag s m) => MonadEtherState tag s (EtherReaderT tag' r m) where
115+instance (MonadState tag s m) => MonadState tag s (ReaderT tag' r m) where
116− etherGet proxy = lift (etherGet proxy)
116+ get proxy = lift (get proxy)
117− etherPut proxy = lift . etherPut proxy
117+ put proxy = lift . put proxy
118− etherState proxy = lift . etherState proxy
118+ state proxy = lift . state proxy
120-- Instances for mtl transformers
120-- Instances for mtl transformers
122−instance MonadEtherState tag s m => MonadEtherState tag s (Trans.ContT r m) where
122+instance MonadState tag s m => MonadState tag s (Trans.ContT r m) where
123− etherGet proxy = lift (etherGet proxy)
123+ get proxy = lift (get proxy)
124− etherPut proxy = lift . etherPut proxy
124+ put proxy = lift . put proxy
125− etherState proxy = lift . etherState proxy
125+ state proxy = lift . state proxy
127−instance MonadEtherState tag s m => MonadEtherState tag s (Trans.ExceptT e m) where
127+instance MonadState tag s m => MonadState tag s (Trans.ExceptT e m) where
128− etherGet proxy = lift (etherGet proxy)
128+ get proxy = lift (get proxy)
129− etherPut proxy = lift . etherPut proxy
129+ put proxy = lift . put proxy
130− etherState proxy = lift . etherState proxy
130+ state proxy = lift . state proxy
132−instance MonadEtherState tag s m => MonadEtherState tag s (Trans.IdentityT m) where
132+instance MonadState tag s m => MonadState tag s (Trans.IdentityT m) where
133− etherGet proxy = lift (etherGet proxy)
133+ get proxy = lift (get proxy)
134− etherPut proxy = lift . etherPut proxy
134+ put proxy = lift . put proxy
135− etherState proxy = lift . etherState proxy
135+ state proxy = lift . state proxy
137−instance MonadEtherState tag s m => MonadEtherState tag s (Trans.ListT m) where
137+instance MonadState tag s m => MonadState tag s (Trans.ListT m) where
138− etherGet proxy = lift (etherGet proxy)
138+ get proxy = lift (get proxy)
139− etherPut proxy = lift . etherPut proxy
139+ put proxy = lift . put proxy
140− etherState proxy = lift . etherState proxy
140+ state proxy = lift . state proxy
142−instance MonadEtherState tag s m => MonadEtherState tag s (Trans.MaybeT m) where
142+instance MonadState tag s m => MonadState tag s (Trans.MaybeT m) where
143− etherGet proxy = lift (etherGet proxy)
143+ get proxy = lift (get proxy)
144− etherPut proxy = lift . etherPut proxy
144+ put proxy = lift . put proxy
145− etherState proxy = lift . etherState proxy
145+ state proxy = lift . state proxy
147−instance MonadEtherState tag s m => MonadEtherState tag s (Trans.ReaderT r m) where
147+instance MonadState tag s m => MonadState tag s (Trans.ReaderT r m) where
148− etherGet proxy = lift (etherGet proxy)
148+ get proxy = lift (get proxy)
149− etherPut proxy = lift . etherPut proxy
149+ put proxy = lift . put proxy
150− etherState proxy = lift . etherState proxy
150+ state proxy = lift . state proxy
152−instance MonadEtherState tag s m => MonadEtherState tag s (Trans.Lazy.StateT s' m) where
152+instance MonadState tag s m => MonadState tag s (Trans.Lazy.StateT s' m) where
153− etherGet proxy = lift (etherGet proxy)
153+ get proxy = lift (get proxy)
154− etherPut proxy = lift . etherPut proxy
154+ put proxy = lift . put proxy
155− etherState proxy = lift . etherState proxy
155+ state proxy = lift . state proxy
157−instance MonadEtherState tag s m => MonadEtherState tag s (Trans.Strict.StateT s' m) where
157+instance MonadState tag s m => MonadState tag s (Trans.Strict.StateT s' m) where
158− etherGet proxy = lift (etherGet proxy)
158+ get proxy = lift (get proxy)
159− etherPut proxy = lift . etherPut proxy
159+ put proxy = lift . put proxy
160− etherState proxy = lift . etherState proxy
160+ state proxy = lift . state proxy
162−instance (Monoid w, MonadEtherState tag s m) => MonadEtherState tag s (Trans.Lazy.WriterT w m) where
162+instance (Monoid w, MonadState tag s m) => MonadState tag s (Trans.Lazy.WriterT w m) where
163− etherGet proxy = lift (etherGet proxy)
163+ get proxy = lift (get proxy)
164− etherPut proxy = lift . etherPut proxy
164+ put proxy = lift . put proxy
165− etherState proxy = lift . etherState proxy
165+ state proxy = lift . state proxy
167−instance (Monoid w, MonadEtherState tag s m) => MonadEtherState tag s (Trans.Strict.WriterT w m) where
167+instance (Monoid w, MonadState tag s m) => MonadState tag s (Trans.Strict.WriterT w m) where
168− etherGet proxy = lift (etherGet proxy)
168+ get proxy = lift (get proxy)
169− etherPut proxy = lift . etherPut proxy
169+ put proxy = lift . put proxy
170− etherState proxy = lift . etherState proxy
170+ state proxy = lift . state proxy