on master help sign in
Change the first argument of concatMapM in unfolds from () to Void
aced270adithyaov
benchmark/Streamly/Benchmark/Data/Unfold.hs−1
@@ -393,7 +393,6 @@ concatMapM size start =
393
393
394 unfoldInGen i =
394 unfoldInGen i =
395 return
395 return
396− $ UF.lmap (\() -> undefined)
397 $ UF.supply (UF.enumerateFromToIntegral (i + sizeInner)) i
396 $ UF.supply (UF.enumerateFromToIntegral (i + sizeInner)) i
398
397
399 unfoldOut = UF.enumerateFromToIntegral (start + sizeOuter)
398 unfoldOut = UF.enumerateFromToIntegral (start + sizeOuter)
src/Streamly/Internal/Data/Unfold.hs+2−2
@@ -1031,7 +1031,7 @@ data ConcatMapState s1 s2 = ConcatMapOuter s1 | ConcatMapInner s1 s2
1031--
1031--
1032{-# INLINE_NORMAL concatMapM #-}
1032{-# INLINE_NORMAL concatMapM #-}
1033concatMapM :: Monad m
1033concatMapM :: Monad m
1034− => (b -> m (Unfold m () c)) -> Unfold m a b -> Unfold m a c
1034+ => (b -> m (Unfold m Void c)) -> Unfold m a b -> Unfold m a c
1035concatMapM f (Unfold step1 inject1) = Unfold step inject
1035concatMapM f (Unfold step1 inject1) = Unfold step inject
1036 where
1036 where
1037 inject x = do
1037 inject x = do
@@ -1044,7 +1044,7 @@ concatMapM f (Unfold step1 inject1) = Unfold step inject
1044 case r of
1044 case r of
1045 Yield x s -> do
1045 Yield x s -> do
1046 Unfold step2 inject2 <- f x
1046 Unfold step2 inject2 <- f x
1047− innerSt <- inject2 ()
1047+ innerSt <- inject2 undefined
1048 return $ Skip (ConcatMapInner s (Stream (\_ ss -> step2 ss)
1048 return $ Skip (ConcatMapInner s (Stream (\_ ss -> step2 ss)
1049 innerSt))
1049 innerSt))
1050 Skip s -> return $ Skip (ConcatMapOuter s)
1050 Skip s -> return $ Skip (ConcatMapOuter s)
test/Streamly/Test/Data/Unfold.hs+1−5
@@ -350,11 +350,7 @@ concatMapM =
350 let unfInF b =
350 let unfInF b =
351 modify (+ 1)
351 modify (+ 1)
352 >> return
352 >> return
353− (UF.lmap
354− (\() -> undefined)
355− (UF.supply
356− (UF.replicateM 10)
353+ (UF.supply (UF.replicateM 10) (modify (+ 1) >> return b))
357− (modify (+ 1) >> return b)))
358 listInF b = replicate 10 b
354 listInF b = replicate 10 b
359 unfOut = UF.enumerateFromToIntegral 10
355 unfOut = UF.enumerateFromToIntegral 10
360 unf = UF.concatMapM unfInF unfOut
356 unf = UF.concatMapM unfInF unfOut