@@ -57,8 +57,8 @@ type EffectHandler e es
57data Handler :: Effect -> Type where
57data Handler :: Effect -> Type where
58 Handler :: Env es -> EffectHandler e es -> Handler e
58 Handler :: Env es -> EffectHandler e es -> Handler e
60−runHandler :: Env es -> Handler e -> Eff (e : es) a -> IO a
60+runHandler :: Handler e -> Eff (e : es) a -> Eff es a
61−runHandler es0 e m = do
61+runHandler e m = unsafeEff $ \es0 -> do
62 size0 <- sizeEnv es0
62 size0 <- sizeEnv es0
63 E.bracket (unsafeConsEnv e relinker es0)
63 E.bracket (unsafeConsEnv e relinker es0)
64 (unsafeTailEnv size0)
64 (unsafeTailEnv size0)
@@ -89,7 +89,7 @@ interpret
89 -> Eff es a
89 -> Eff es a
90interpret handler m = unsafeEff $ \es -> do
90interpret handler m = unsafeEff $ \es -> do
91 les <- forkEnv es
91 les <- forkEnv es
92− runHandler es (Handler les handler) m
92+ (`unEff` es) $ runHandler (Handler les handler) m
94----------------------------------------
94----------------------------------------
95-- Reinterpretation
95-- Reinterpretation
@@ -105,7 +105,7 @@ reinterpret
105reinterpret runHandlerEs handler m = unsafeEff $ \es -> do
105reinterpret runHandlerEs handler m = unsafeEff $ \es -> do
106 les0 <- forkEnv es
106 les0 <- forkEnv es
107 (`unEff` les0) . runHandlerEs . unsafeEff $ \les -> do
107 (`unEff` les0) . runHandlerEs . unsafeEff $ \les -> do
108− runHandler es (Handler les handler) m
108+ (`unEff` es) $ runHandler (Handler les handler) m
110----------------------------------------
110----------------------------------------
111-- Unlifts
111-- Unlifts