Skip to content

Commit 5319f02

Browse files
committed
simplify the distribute Return case
This commit shouldn't change the meaning of the code: lift (Return r) = -- by Monad instance of Stream lift (return r) = -- by laws of MonadTrans/lift return r However, the result may be more efficient. In the case where t = Stream f, we have: lift (Return r) = -- by definition of lift (Effect . fmap Return) (Return r) = -- by definition of (.) Effect (fmap Return (Return r)) = -- by definition of fmap Effect (Return (Return r)) But doing `return r` directly produces just `Return r` (without the no-op Effect wrapper).
1 parent 608c4cf commit 5319f02

File tree

1 file changed

+1
-1
lines changed

1 file changed

+1
-1
lines changed

src/Streaming/Internal.hs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -763,7 +763,7 @@ distribute :: (Monad m, Functor f, MonadTrans t, MFunctor t, Monad (t (Stream f
763763
=> Stream f (t m) r -> t (Stream f m) r
764764
distribute = loop where
765765
loop stream = case stream of
766-
Return r -> lift (Return r)
766+
Return r -> return r
767767
Effect tmstr -> hoist lift tmstr >>= loop
768768
Step fstr -> join (lift (Step (fmap (Return . loop) fstr)))
769769
{-# INLINABLE distribute #-}

0 commit comments

Comments
 (0)