@@ -0,0 +1,79 @@
1+{-# LANGUAGE AllowAmbiguousTypes #-}
2+{-# LANGUAGE ScopedTypeVariables #-}
3+{-# LANGUAGE MagicHash #-}
5+-- | See "Control.Monad.Ether.State.Strict".
7+module Control.Monad.Ether.Ambiguous.State.Strict
21+ -- * The StateT monad transformer
29+import GHC.Prim (Proxy#, proxy#)
30+import Control.Monad.Ether.State.Strict (MonadState, StateT, State)
31+import qualified Control.Monad.Ether.State.Strict as Explicit
33+-- | See 'Control.Monad.Ether.State.Strict.stateT'.
34+stateT :: forall tag s m a . (s -> m (a, s)) -> StateT tag s m a
35+stateT = Explicit.stateT proxy#
37+-- | See 'Control.Monad.Ether.State.Strict.runStateT'.
38+runStateT :: forall tag s m a . StateT tag s m a -> s -> m (a, s)
39+runStateT = Explicit.runStateT proxy#
41+-- | See 'Control.Monad.Ether.State.Strict.runState'.
42+runState :: forall tag s a . State tag s a -> s -> (a, s)
43+runState = Explicit.runState proxy#
45+-- | See 'Control.Monad.Ether.State.Strict.evalStateT'.
46+evalStateT :: forall tag s m a . Monad m => StateT tag s m a -> s -> m a
47+evalStateT = Explicit.evalStateT proxy#
49+-- | See 'Control.Monad.Ether.State.Strict.evalState'.
50+evalState :: forall tag s a . State tag s a -> s -> a
51+evalState = Explicit.evalState proxy#
53+-- | See 'Control.Monad.Ether.State.Strict.execStateT'.
54+execStateT :: forall tag s m a . Monad m => StateT tag s m a -> s -> m s
55+execStateT = Explicit.execStateT proxy#
57+-- | See 'Control.Monad.Ether.State.Strict.execState'.
58+execState :: forall tag s a . State tag s a -> s -> s
59+execState = Explicit.execState proxy#
61+-- | See 'Control.Monad.Ether.State.Strict.get'.
62+get :: forall tag s m . MonadState tag s m => m s
63+get = Explicit.get (proxy# :: Proxy# tag)
65+-- | See 'Control.Monad.Ether.State.Strict.gets'.
66+gets :: forall tag s m a . MonadState tag s m => (s -> a) -> m a
67+gets = Explicit.gets (proxy# :: Proxy# tag)
69+-- | See 'Control.Monad.Ether.State.Strict.put'.
70+put :: forall tag s m . MonadState tag s m => s -> m ()
71+put = Explicit.put (proxy# :: Proxy# tag)
73+-- | See 'Control.Monad.Ether.State.Strict.state'.
74+state :: forall tag s m a . MonadState tag s m => (s -> (a, s)) -> m a
75+state = Explicit.state (proxy# :: Proxy# tag)
77+-- | See 'Control.Monad.Ether.State.Strict.modify'.
78+modify :: forall tag s m . MonadState tag s m => (s -> s) -> m ()
79+modify = Explicit.modify (proxy# :: Proxy# tag)