on master help sign in
Make runHandler work in Eff
commita0f47ae5584eba69d325a94103f196190024fe13 authorAndrzej Rybczak <andrzej@rybczak.net> dateTue 27 Jul 2021, 20:31 (5 years ago) parenta7bc404
1 file changed+4−4
effectful-core/src/Effectful/Handler.hs+4−4
effectful-core/src/Effectful/Handler.hs+4−4
@@ -57,8 +57,8 @@ type EffectHandler e es
5757data Handler :: Effect -> Type where
5858 Handler :: Env es -> EffectHandler e es -> Handler e
5959
60−runHandler :: Env es -> Handler e -> Eff (e : es) a -> IO a
61−runHandler es0 e m = do
60+runHandler :: Handler e -> Eff (e : es) a -> Eff es a
61+runHandler e m = unsafeEff $ \es0 -> do
6262 size0 <- sizeEnv es0
6363 E.bracket (unsafeConsEnv e relinker es0)
6464 (unsafeTailEnv size0)
@@ -89,7 +89,7 @@ interpret
8989 -> Eff es a
9090interpret handler m = unsafeEff $ \es -> do
9191 les <- forkEnv es
92− runHandler es (Handler les handler) m
92+ (`unEff` es) $ runHandler (Handler les handler) m
9393
9494----------------------------------------
9595-- Reinterpretation
@@ -105,7 +105,7 @@ reinterpret
105105reinterpret runHandlerEs handler m = unsafeEff $ \es -> do
106106 les0 <- forkEnv es
107107 (`unEff` les0) . runHandlerEs . unsafeEff $ \les -> do
108− runHandler es (Handler les handler) m
108+ (`unEff` es) $ runHandler (Handler les handler) m
109109
110110----------------------------------------
111111-- Unlifts