@@ -12,9 +12,9 @@ import qualified Control.Effect as L
12-- effectful
12-- effectful
13import qualified Effectful as E
13import qualified Effectful as E
14import qualified Effectful.Reader as E
14import qualified Effectful.Reader as E
15−import qualified Effectful.State as E
15+import qualified Effectful.State.Dynamic as ED
16−import qualified Effectful.State.Dynamic as DE
16+import qualified Effectful.State.Local as EL
17−import qualified Effectful.State.MVar as ME
17+import qualified Effectful.State.Shared as ES
19-- freer-simple
19-- freer-simple
20#ifdef VERSION_freer_simple
20#ifdef VERSION_freer_simple
@@ -103,85 +103,87 @@ countdownMtlDeep n = runIdentity
103----------------------------------------
103----------------------------------------
104-- effectful (pure)
104-- effectful (pure)
106−programEffectfulStatic :: E.State Integer E.:> es => E.Eff es Integer
106+programEffectfulLocal :: EL.State Integer E.:> es => E.Eff es Integer
107−programEffectfulStatic = do
107+programEffectfulLocal = do
108− n <- E.get @Integer
108+ n <- EL.get @Integer
109 if n <= 0
109 if n <= 0
110 then pure n
110 then pure n
112− E.put (n - 1)
112+ EL.put (n - 1)
113− programEffectfulStatic
113+ programEffectfulLocal
114−{-# NOINLINE programEffectfulStatic #-}
114+{-# NOINLINE programEffectfulLocal #-}
116−countdownEffectfulStatic :: Integer -> (Integer, Integer)
116+countdownEffectfulLocal :: Integer -> (Integer, Integer)
117−countdownEffectfulStatic n = E.runPureEff . E.runState n $ programEffectfulStatic
117+countdownEffectfulLocal n = E.runPureEff . EL.runState n $ programEffectfulLocal
119−countdownEffectfulStaticDeep :: Integer -> (Integer, Integer)
119+countdownEffectfulLocalDeep :: Integer -> (Integer, Integer)
120−countdownEffectfulStaticDeep n = E.runPureEff
120+countdownEffectfulLocalDeep n = E.runPureEff
121 . runR . runR . runR . runR . runR
121 . runR . runR . runR . runR . runR
122− . E.runState n
122+ . EL.runState n
123 . runR . runR . runR . runR . runR
123 . runR . runR . runR . runR . runR
124− $ programEffectfulStatic
124+ $ programEffectfulLocal
126 runR = E.runReader ()
126 runR = E.runReader ()
128----------------------------------------
128----------------------------------------
129-- effectful (mvar)
129-- effectful (mvar)
131−programEffectfulMVar :: ME.State Integer E.:> es => E.Eff es Integer
131+programEffectfulShared :: ES.State Integer E.:> es => E.Eff es Integer
132−programEffectfulMVar = do
132+programEffectfulShared = do
133− n <- ME.get @Integer
133+ n <- ES.get @Integer
134 if n <= 0
134 if n <= 0
135 then pure n
135 then pure n
137− ME.put (n - 1)
137+ ES.put (n - 1)
138− programEffectfulMVar
138+ programEffectfulShared
139−{-# NOINLINE programEffectfulMVar #-}
139+{-# NOINLINE programEffectfulShared #-}
141−countdownEffectfulMVar :: Integer -> (Integer, Integer)
141+countdownEffectfulShared :: Integer -> (Integer, Integer)
142−countdownEffectfulMVar n = E.runPureEff . ME.runState n $ programEffectfulMVar
142+countdownEffectfulShared n = E.runPureEff . ES.runState n $ programEffectfulShared
144−countdownEffectfulMVarDeep :: Integer -> (Integer, Integer)
144+countdownEffectfulSharedDeep :: Integer -> (Integer, Integer)
145−countdownEffectfulMVarDeep n = E.runPureEff
145+countdownEffectfulSharedDeep n = E.runPureEff
146 . runR . runR . runR . runR . runR
146 . runR . runR . runR . runR . runR
147− . ME.runState n
147+ . ES.runState n
148 . runR . runR . runR . runR . runR
148 . runR . runR . runR . runR . runR
149− $ programEffectfulMVar
149+ $ programEffectfulShared
151 runR = E.runReader ()
151 runR = E.runReader ()
153----------------------------------------
153----------------------------------------
154-- effectful (dynamic)
154-- effectful (dynamic)
156−programEffectfulDynamic :: DE.State Integer E.:> es => E.Eff es Integer
156+programEffectfulDynamic :: ED.State Integer E.:> es => E.Eff es Integer
157programEffectfulDynamic = do
157programEffectfulDynamic = do
158− n <- DE.get @Integer
158+ n <- ED.get @Integer
159 if n <= 0
159 if n <= 0
160 then pure n
160 then pure n
162− DE.put (n - 1)
162+ ED.put (n - 1)
163 programEffectfulDynamic
163 programEffectfulDynamic
164{-# NOINLINE programEffectfulDynamic #-}
164{-# NOINLINE programEffectfulDynamic #-}
166−countdownEffectfulDynPure :: Integer -> (Integer, Integer)
166+countdownEffectfulDynLocal :: Integer -> (Integer, Integer)
167+countdownEffectfulDynLocal n =
167−countdownEffectfulDynPure n = E.runPureEff . DE.runState n $ programEffectfulDynamic
168+ E.runPureEff . ED.runLocalState n $ programEffectfulDynamic
169−countdownEffectfulDynMVar :: Integer -> (Integer, Integer)
170+countdownEffectfulDynShared :: Integer -> (Integer, Integer)
171+countdownEffectfulDynShared n =
170−countdownEffectfulDynMVar n = E.runPureEff . DE.runStateMVar n $ programEffectfulDynamic
172+ E.runPureEff . ED.runSharedState n $ programEffectfulDynamic
172−countdownEffectfulDynPureDeep :: Integer -> (Integer, Integer)
174+countdownEffectfulDynLocalDeep :: Integer -> (Integer, Integer)
173−countdownEffectfulDynPureDeep n = E.runPureEff
175+countdownEffectfulDynLocalDeep n = E.runPureEff
174 . runR . runR . runR . runR . runR
176 . runR . runR . runR . runR . runR
175− . DE.runState n
177+ . ED.runLocalState n
176 . runR . runR . runR . runR . runR
178 . runR . runR . runR . runR . runR
177 $ programEffectfulDynamic
179 $ programEffectfulDynamic
179 runR = E.runReader ()
181 runR = E.runReader ()
181−countdownEffectfulDynMVarDeep :: Integer -> (Integer, Integer)
183+countdownEffectfulDynSharedDeep :: Integer -> (Integer, Integer)
182−countdownEffectfulDynMVarDeep n = E.runPureEff
184+countdownEffectfulDynSharedDeep n = E.runPureEff
183 . runR . runR . runR . runR . runR
185 . runR . runR . runR . runR . runR
184− . DE.runStateMVar n
186+ . ED.runSharedState n
185 . runR . runR . runR . runR . runR
187 . runR . runR . runR . runR . runR
186 $ programEffectfulDynamic
188 $ programEffectfulDynamic