@@ -172,11 +172,14 @@ bindWith
172172 -> AsyncT m a
173173 -> (a -> AsyncT m b)
174174 -> AsyncT m b
175−bindWith k (AsyncT m) f = AsyncT $ \_ stp yld ->
176− let run x = (runAsyncT x) Nothing stp yld
177− yield a _ Nothing = run $ f a
178− yield a _ (Just r) = run $ f a `k` (bindWith k r f)
179− in m Nothing stp yield
175+bindWith k m f = go m
176+ where
177+ go (AsyncT g) =
178+ AsyncT $ \_ stp yld ->
179+ let run x = (runAsyncT x) Nothing stp yld
180+ yield a _ Nothing = run $ f a
181+ yield a _ (Just r) = run $ f a `k` (go r)
182+ in g Nothing stp yield
180183
181184instance Monad m => Monad (AsyncT m) where
182185 return a = AsyncT $ \ctx _ yld -> yld a ctx Nothing