on master help sign in
Use static argument transformation for bindWith
commit5a21de27a82812528d58dd5b90fe1aa191dc2ec5 authorHarendra Kumar <harendra.kumar@gmail.com> dateTue 12 Sep 2017, 21:11 (9 years ago) parent9dc1935
1 file changed+8−5
src/Asyncly/AsyncT.hs+8−5
src/Asyncly/AsyncT.hs+8−5
@@ -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