@@ -1,6 +1,6 @@
1{-# LANGUAGE ConstraintKinds #-}
1{-# LANGUAGE ConstraintKinds #-}
2+{-# LANGUAGE TypeApplications #-}
2{-# LANGUAGE ScopedTypeVariables #-}
3{-# LANGUAGE ScopedTypeVariables #-}
3−{-# LANGUAGE MagicHash #-}
5-- | See "Control.Monad.Ether.State.Strict".
5-- | See "Control.Monad.Ether.State.Strict".
@@ -26,62 +26,61 @@ module Control.Monad.Ether.Implicit.State.Strict
26 , execStateT
26 , execStateT
29−import GHC.Prim (Proxy#, proxy#)
30−import qualified Control.Monad.Ether.State.Strict as Explicit
29+import qualified Control.Monad.Ether.Ambiguous.State.Strict as A
32-- | See 'Control.Monad.Ether.State.Strict.StateT'.
31-- | See 'Control.Monad.Ether.State.Strict.StateT'.
33−type StateT s = Explicit.StateT s s
32+type StateT s = A.StateT s s
35−-- | See 'Control.Monad.Ether.State.Strict.State'.
36−type State s = Explicit.State s s
38-- | See 'Control.Monad.Ether.State.Strict.stateT'.
34-- | See 'Control.Monad.Ether.State.Strict.stateT'.
39stateT :: (s -> m (a, s)) -> StateT s m a
35stateT :: (s -> m (a, s)) -> StateT s m a
40−stateT = Explicit.stateT proxy#
36+stateT = A.stateT
42-- | See 'Control.Monad.Ether.State.Strict.runStateT'.
38-- | See 'Control.Monad.Ether.State.Strict.runStateT'.
43runStateT :: StateT s m a -> s -> m (a, s)
39runStateT :: StateT s m a -> s -> m (a, s)
44−runStateT = Explicit.runStateT proxy#
40+runStateT = A.runStateT
46-- | See 'Control.Monad.Ether.State.Strict.runState'.
42-- | See 'Control.Monad.Ether.State.Strict.runState'.
47runState :: State s a -> s -> (a, s)
43runState :: State s a -> s -> (a, s)
48−runState = Explicit.runState proxy#
44+runState = A.runState
50-- | See 'Control.Monad.Ether.State.Strict.evalStateT'.
46-- | See 'Control.Monad.Ether.State.Strict.evalStateT'.
51evalStateT :: Monad m => StateT s m a -> s -> m a
47evalStateT :: Monad m => StateT s m a -> s -> m a
52−evalStateT = Explicit.evalStateT proxy#
48+evalStateT = A.evalStateT
50+-- | See 'Control.Monad.Ether.State.Strict.State'.
51+type State s = A.State s s
54-- | See 'Control.Monad.Ether.State.Strict.evalState'.
53-- | See 'Control.Monad.Ether.State.Strict.evalState'.
55evalState :: State s a -> s -> a
54evalState :: State s a -> s -> a
56−evalState = Explicit.evalState proxy#
55+evalState = A.evalState
58-- | See 'Control.Monad.Ether.State.Strict.execStateT'.
57-- | See 'Control.Monad.Ether.State.Strict.execStateT'.
59execStateT :: Monad m => StateT s m a -> s -> m s
58execStateT :: Monad m => StateT s m a -> s -> m s
60−execStateT = Explicit.execStateT proxy#
59+execStateT = A.execStateT
62-- | See 'Control.Monad.Ether.State.Strict.execState'.
61-- | See 'Control.Monad.Ether.State.Strict.execState'.
63execState :: State s a -> s -> s
62execState :: State s a -> s -> s
64−execState = Explicit.execState proxy#
63+execState = A.execState
66-- | See 'Control.Monad.Ether.State.Strict.MonadState'.
65-- | See 'Control.Monad.Ether.State.Strict.MonadState'.
67−type MonadState s = Explicit.MonadState s s
66+type MonadState s = A.MonadState s s
69-- | See 'Control.Monad.Ether.State.Strict.get'.
68-- | See 'Control.Monad.Ether.State.Strict.get'.
70get :: forall s m . MonadState s m => m s
69get :: forall s m . MonadState s m => m s
71−get = Explicit.get (proxy# :: Proxy# s)
70+get = A.get @s
73-- | See 'Control.Monad.Ether.State.Strict.gets'.
72-- | See 'Control.Monad.Ether.State.Strict.gets'.
74gets :: forall s m a . MonadState s m => (s -> a) -> m a
73gets :: forall s m a . MonadState s m => (s -> a) -> m a
75−gets = Explicit.gets (proxy# :: Proxy# s)
74+gets = A.gets @s
77-- | See 'Control.Monad.Ether.State.Strict.put'.
76-- | See 'Control.Monad.Ether.State.Strict.put'.
78put :: forall s m . MonadState s m => s -> m ()
77put :: forall s m . MonadState s m => s -> m ()
79−put = Explicit.put (proxy# :: Proxy# s)
78+put = A.put @s
81-- | See 'Control.Monad.Ether.State.Strict.state'.
80-- | See 'Control.Monad.Ether.State.Strict.state'.
82state :: forall s m a . MonadState s m => (s -> (a, s)) -> m a
81state :: forall s m a . MonadState s m => (s -> (a, s)) -> m a
83−state = Explicit.state (proxy# :: Proxy# s)
82+state = A.state @s
85-- | See 'Control.Monad.Ether.State.Strict.modify'.
84-- | See 'Control.Monad.Ether.State.Strict.modify'.
86modify :: forall s m . MonadState s m => (s -> s) -> m ()
85modify :: forall s m . MonadState s m => (s -> s) -> m ()
87−modify = Explicit.modify (proxy# :: Proxy# s)
86+modify = A.modify @s