@@ -55,15 +55,6 @@ sourceUnfoldr value n = S.unfoldr step n
5555 then Nothing
5656 else Just (cnt, cnt + 1)
5757
58−{-# INLINE sourceUnfoldrN #-}
59−sourceUnfoldrN :: Int -> Int -> Stream m Int
60−sourceUnfoldrN m n = S.unfoldr step n
61− where
62− step cnt =
63− if cnt > n + m
64− then Nothing
65− else Just (cnt, cnt + 1)
66−
6758{-# INLINE sourceUnfoldrM #-}
6859sourceUnfoldrM :: S.MonadAsync m => Int -> Int -> Stream m Int
6960sourceUnfoldrM value n = S.unfoldrM step n
@@ -73,15 +64,6 @@ sourceUnfoldrM value n = S.unfoldrM step n
7364 then return Nothing
7465 else return (Just (cnt, cnt + 1))
7566
76−{-# INLINE sourceUnfoldrMN #-}
77−sourceUnfoldrMN :: S.MonadAsync m => Int -> Int -> Stream m Int
78−sourceUnfoldrMN m n = S.unfoldrM step n
79− where
80− step cnt =
81− if cnt > n + m
82− then return Nothing
83− else return (Just (cnt, cnt + 1))
84−
8567{-# INLINE sourceFromFoldable #-}
8668sourceFromFoldable :: Int -> Int -> Stream m Int
8769sourceFromFoldable value n = S.fromFoldable [n..n+value]
@@ -264,7 +246,7 @@ intersperse maxValue n = composeN n $ S.intersperse maxValue
264246iterateSource
265247 :: S.MonadAsync m
266248 => Int -> (Stream m Int -> Stream m Int) -> Int -> Int -> Stream m Int
267−iterateSource iterStreamLen g i n = f i (sourceUnfoldrMN iterStreamLen n)
249+iterateSource iterStreamLen g i n = f i (sourceUnfoldrM iterStreamLen n)
268250 where
269251 f (0 :: Int) m = g m
270252 f x m = g (f (x P.- 1) m)
@@ -363,8 +345,8 @@ filterMap maxValue n = composeN n $ S.map (subtract 1) . S.filter (<= maxValue)
363345concatMap :: Int -> Int -> Int -> IO ()
364346concatMap outer inner n =
365347 S.drain $ S.concatMap
366− (\_ -> sourceUnfoldrMN inner n)
367− (sourceUnfoldrMN outer n)
348+ (\_ -> sourceUnfoldrM inner n)
349+ (sourceUnfoldrM outer n)
368350
369351#ifdef INSPECTION
370352inspect $ hasNoTypeClasses 'concatMap
@@ -376,8 +358,8 @@ inspect $ hasNoTypeClasses 'concatMap
376358concatMapPure :: Int -> Int -> Int -> IO ()
377359concatMapPure outer inner n =
378360 S.drain $ S.concatMap
379− (\_ -> sourceUnfoldrN inner n)
380− (sourceUnfoldrN outer n)
361+ (\_ -> sourceUnfoldr inner n)
362+ (sourceUnfoldr outer n)
381363
382364#ifdef INSPECTION
383365inspect $ hasNoTypeClasses 'concatMapPure
@@ -388,7 +370,7 @@ inspect $ hasNoTypeClasses 'concatMapPure
388370{-# INLINE concatMapRepl #-}
389371concatMapRepl :: Int -> Int -> Int -> IO ()
390372concatMapRepl outer inner n =
391− S.drain $ S.concatMap (S.replicate inner) (sourceUnfoldrMN outer n)
373+ S.drain $ S.concatMap (S.replicate inner) (sourceUnfoldrM outer n)
392374
393375#ifdef INSPECTION
394376inspect $ hasNoTypeClasses 'concatMapRepl
@@ -406,8 +388,8 @@ sourceConcatMapId val n =
406388concatStreamsWith :: Int -> Int -> Int -> IO ()
407389concatStreamsWith outer inner n =
408390 S.drain $ S.concatMapBy S.serial
409− (sourceUnfoldrMN inner)
410− (sourceUnfoldrMN outer n)
391+ (sourceUnfoldrM inner)
392+ (sourceUnfoldrM outer n)
411393
412394-------------------------------------------------------------------------------
413395-- Nested Composition
@@ -544,16 +526,16 @@ o_1_space_elimination value =
544526o_1_space_nested :: Int -> Benchmark
545527o_1_space_nested value =
546528 bgroup "nested"
547− [ benchFold "toNullAp" toNullApNested (sourceUnfoldrMN value2)
548− , benchFold "toNull" toNullNested (sourceUnfoldrMN value2)
549− , benchFold "toNull3" toNullNested3 (sourceUnfoldrMN value3)
550− , benchFold "filterAllIn" filterAllInNested (sourceUnfoldrMN value2)
551− , benchFold "filterAllOut" filterAllOutNested (sourceUnfoldrMN value2)
552− , benchFold "toNullApPure" toNullApNested (sourceUnfoldrN value2)
553− , benchFold "toNullPure" toNullNested (sourceUnfoldrN value2)
554− , benchFold "toNull3Pure" toNullNested3 (sourceUnfoldrN value3)
555− , benchFold "filterAllInPure" filterAllInNested (sourceUnfoldrN value2)
556− , benchFold "filterAllOutPure" filterAllOutNested (sourceUnfoldrN value2)
529+ [ benchFold "toNullAp" toNullApNested (sourceUnfoldrM value2)
530+ , benchFold "toNull" toNullNested (sourceUnfoldrM value2)
531+ , benchFold "toNull3" toNullNested3 (sourceUnfoldrM value3)
532+ , benchFold "filterAllIn" filterAllInNested (sourceUnfoldrM value2)
533+ , benchFold "filterAllOut" filterAllOutNested (sourceUnfoldrM value2)
534+ , benchFold "toNullApPure" toNullApNested (sourceUnfoldr value2)
535+ , benchFold "toNullPure" toNullNested (sourceUnfoldr value2)
536+ , benchFold "toNull3Pure" toNullNested3 (sourceUnfoldr value3)
537+ , benchFold "filterAllInPure" filterAllInNested (sourceUnfoldr value2)
538+ , benchFold "filterAllOutPure" filterAllOutNested (sourceUnfoldr value2)
557539 ]
558540 where
559541 value2 = round (P.fromIntegral value**(1/2::P.Double)) -- double nested loop
@@ -577,7 +559,7 @@ o_1_space_transformation value =
577559 , benchFold "mapM" (mapM 4) (sourceUnfoldrM value)
578560 , benchFold "mapMSerial" (mapMSerial 4) (sourceUnfoldrM value)
579561 -- XXX this is horribly slow
580− -- , benchFold "concatMap" (concatMap 4) (sourceUnfoldrMN value16)
562+ -- , benchFold "concatMap" (concatMap 4) (sourceUnfoldrM value16)
581563 ]
582564 ]
583565
@@ -752,12 +734,12 @@ o_n_stack value iterStreamLen maxIters =
752734 , bgroup "transformation"
753735 [
754736 -- XXX why do these need so much stack
755− benchFold "intersperse" (intersperse maxValue 1) (sourceUnfoldrMN value2)
756− , benchFold "interspersePure" (intersperse maxValue 1) (sourceUnfoldrN value2)
737+ benchFold "intersperse" (intersperse maxValue 1) (sourceUnfoldrM value2)
738+ , benchFold "interspersePure" (intersperse maxValue 1) (sourceUnfoldr value2)
757739 ]
758740 , bgroup "transformationX4"
759741 [
760− benchFold "intersperse" (intersperse maxValue 4) (sourceUnfoldrMN value16)
742+ benchFold "intersperse" (intersperse maxValue 4) (sourceUnfoldrM value16)
761743 ]
762744 , bgroup "iterated"
763745 [ benchK "mapM" (iterateMapM iterStreamLen maxIters)