@@ -125,11 +125,13 @@ type MonadAsync m = (MonadIO m, MonadBaseControl IO m, MonadThrow m)
125125
126126-- | Appends the results of two AsyncT computations in order.
127127instance Semigroup (AsyncT m a) where
128− (AsyncT m1) <> m2 = AsyncT $ \ctx stp yld ->
129− let stop = (runAsyncT m2) ctx stp yld
130− yield a c Nothing = yld a c (Just m2)
131− yield a c (Just r) = yld a c (Just (mappend r m2))
132− in m1 ctx stop yield
128+ m1 <> m2 = go m1
129+ where
130+ go (AsyncT m) = AsyncT $ \ctx stp yld ->
131+ let stop = (runAsyncT m2) ctx stp yld
132+ yield a c Nothing = yld a c (Just m2)
133+ yield a c (Just r) = yld a c (Just (go r))
134+ in m ctx stop yield
133135
134136-- | Appends the results of two AsyncT computations in order.
135137instance Monoid (AsyncT m a) where