@@ -12,9 +12,9 @@ import qualified Control.Effect as L
1212-- effectful
1313import qualified Effectful as E
1414import qualified Effectful.Reader as E
15−import qualified Effectful.State as E
16−import qualified Effectful.State.Dynamic as DE
17−import qualified Effectful.State.MVar as ME
15+import qualified Effectful.State.Dynamic as ED
16+import qualified Effectful.State.Local as EL
17+import qualified Effectful.State.Shared as ES
1818
1919-- freer-simple
2020#ifdef VERSION_freer_simple
@@ -103,85 +103,87 @@ countdownMtlDeep n = runIdentity
103103----------------------------------------
104104-- effectful (pure)
105105
106−programEffectfulStatic :: E.State Integer E.:> es => E.Eff es Integer
107−programEffectfulStatic = do
108− n <- E.get @Integer
106+programEffectfulLocal :: EL.State Integer E.:> es => E.Eff es Integer
107+programEffectfulLocal = do
108+ n <- EL.get @Integer
109109 if n <= 0
110110 then pure n
111111 else do
112− E.put (n - 1)
113− programEffectfulStatic
114−{-# NOINLINE programEffectfulStatic #-}
112+ EL.put (n - 1)
113+ programEffectfulLocal
114+{-# NOINLINE programEffectfulLocal #-}
115115
116−countdownEffectfulStatic :: Integer -> (Integer, Integer)
117−countdownEffectfulStatic n = E.runPureEff . E.runState n $ programEffectfulStatic
116+countdownEffectfulLocal :: Integer -> (Integer, Integer)
117+countdownEffectfulLocal n = E.runPureEff . EL.runState n $ programEffectfulLocal
118118
119−countdownEffectfulStaticDeep :: Integer -> (Integer, Integer)
120−countdownEffectfulStaticDeep n = E.runPureEff
119+countdownEffectfulLocalDeep :: Integer -> (Integer, Integer)
120+countdownEffectfulLocalDeep n = E.runPureEff
121121 . runR . runR . runR . runR . runR
122− . E.runState n
122+ . EL.runState n
123123 . runR . runR . runR . runR . runR
124− $ programEffectfulStatic
124+ $ programEffectfulLocal
125125 where
126126 runR = E.runReader ()
127127
128128----------------------------------------
129129-- effectful (mvar)
130130
131−programEffectfulMVar :: ME.State Integer E.:> es => E.Eff es Integer
132−programEffectfulMVar = do
133− n <- ME.get @Integer
131+programEffectfulShared :: ES.State Integer E.:> es => E.Eff es Integer
132+programEffectfulShared = do
133+ n <- ES.get @Integer
134134 if n <= 0
135135 then pure n
136136 else do
137− ME.put (n - 1)
138− programEffectfulMVar
139−{-# NOINLINE programEffectfulMVar #-}
137+ ES.put (n - 1)
138+ programEffectfulShared
139+{-# NOINLINE programEffectfulShared #-}
140140
141−countdownEffectfulMVar :: Integer -> (Integer, Integer)
142−countdownEffectfulMVar n = E.runPureEff . ME.runState n $ programEffectfulMVar
141+countdownEffectfulShared :: Integer -> (Integer, Integer)
142+countdownEffectfulShared n = E.runPureEff . ES.runState n $ programEffectfulShared
143143
144−countdownEffectfulMVarDeep :: Integer -> (Integer, Integer)
145−countdownEffectfulMVarDeep n = E.runPureEff
144+countdownEffectfulSharedDeep :: Integer -> (Integer, Integer)
145+countdownEffectfulSharedDeep n = E.runPureEff
146146 . runR . runR . runR . runR . runR
147− . ME.runState n
147+ . ES.runState n
148148 . runR . runR . runR . runR . runR
149− $ programEffectfulMVar
149+ $ programEffectfulShared
150150 where
151151 runR = E.runReader ()
152152
153153----------------------------------------
154154-- effectful (dynamic)
155155
156−programEffectfulDynamic :: DE.State Integer E.:> es => E.Eff es Integer
156+programEffectfulDynamic :: ED.State Integer E.:> es => E.Eff es Integer
157157programEffectfulDynamic = do
158− n <- DE.get @Integer
158+ n <- ED.get @Integer
159159 if n <= 0
160160 then pure n
161161 else do
162− DE.put (n - 1)
162+ ED.put (n - 1)
163163 programEffectfulDynamic
164164{-# NOINLINE programEffectfulDynamic #-}
165165
166−countdownEffectfulDynPure :: Integer -> (Integer, Integer)
167−countdownEffectfulDynPure n = E.runPureEff . DE.runState n $ programEffectfulDynamic
166+countdownEffectfulDynLocal :: Integer -> (Integer, Integer)
167+countdownEffectfulDynLocal n =
168+ E.runPureEff . ED.runLocalState n $ programEffectfulDynamic
168169
169−countdownEffectfulDynMVar :: Integer -> (Integer, Integer)
170−countdownEffectfulDynMVar n = E.runPureEff . DE.runStateMVar n $ programEffectfulDynamic
170+countdownEffectfulDynShared :: Integer -> (Integer, Integer)
171+countdownEffectfulDynShared n =
172+ E.runPureEff . ED.runSharedState n $ programEffectfulDynamic
171173
172−countdownEffectfulDynPureDeep :: Integer -> (Integer, Integer)
173−countdownEffectfulDynPureDeep n = E.runPureEff
174+countdownEffectfulDynLocalDeep :: Integer -> (Integer, Integer)
175+countdownEffectfulDynLocalDeep n = E.runPureEff
174176 . runR . runR . runR . runR . runR
175− . DE.runState n
177+ . ED.runLocalState n
176178 . runR . runR . runR . runR . runR
177179 $ programEffectfulDynamic
178180 where
179181 runR = E.runReader ()
180182
181−countdownEffectfulDynMVarDeep :: Integer -> (Integer, Integer)
182−countdownEffectfulDynMVarDeep n = E.runPureEff
183+countdownEffectfulDynSharedDeep :: Integer -> (Integer, Integer)
184+countdownEffectfulDynSharedDeep n = E.runPureEff
183185 . runR . runR . runR . runR . runR
184− . DE.runStateMVar n
186+ . ED.runSharedState n
185187 . runR . runR . runR . runR . runR
186188 $ programEffectfulDynamic
187189 where