@@ -55,15 +55,6 @@ sourceUnfoldr value n = S.unfoldr step n
55 then Nothing
55 then Nothing
56 else Just (cnt, cnt + 1)
56 else Just (cnt, cnt + 1)
58−{-# INLINE sourceUnfoldrN #-}
59−sourceUnfoldrN :: Int -> Int -> Stream m Int
60−sourceUnfoldrN m n = S.unfoldr step n
65− else Just (cnt, cnt + 1)
67{-# INLINE sourceUnfoldrM #-}
58{-# INLINE sourceUnfoldrM #-}
68sourceUnfoldrM :: S.MonadAsync m => Int -> Int -> Stream m Int
59sourceUnfoldrM :: S.MonadAsync m => Int -> Int -> Stream m Int
69sourceUnfoldrM value n = S.unfoldrM step n
60sourceUnfoldrM value n = S.unfoldrM step n
@@ -73,15 +64,6 @@ sourceUnfoldrM value n = S.unfoldrM step n
73 then return Nothing
64 then return Nothing
74 else return (Just (cnt, cnt + 1))
65 else return (Just (cnt, cnt + 1))
76−{-# INLINE sourceUnfoldrMN #-}
77−sourceUnfoldrMN :: S.MonadAsync m => Int -> Int -> Stream m Int
78−sourceUnfoldrMN m n = S.unfoldrM step n
83− else return (Just (cnt, cnt + 1))
85{-# INLINE sourceFromFoldable #-}
67{-# INLINE sourceFromFoldable #-}
86sourceFromFoldable :: Int -> Int -> Stream m Int
68sourceFromFoldable :: Int -> Int -> Stream m Int
87sourceFromFoldable value n = S.fromFoldable [n..n+value]
69sourceFromFoldable value n = S.fromFoldable [n..n+value]
@@ -264,7 +246,7 @@ intersperse maxValue n = composeN n $ S.intersperse maxValue
264iterateSource
246iterateSource
265 :: S.MonadAsync m
247 :: S.MonadAsync m
266 => Int -> (Stream m Int -> Stream m Int) -> Int -> Int -> Stream m Int
248 => 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)
269 f (0 :: Int) m = g m
251 f (0 :: Int) m = g m
270 f x m = g (f (x P.- 1) m)
252 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)
363concatMap :: Int -> Int -> Int -> IO ()
345concatMap :: Int -> Int -> Int -> IO ()
364concatMap outer inner n =
346concatMap outer inner n =
365 S.drain $ S.concatMap
347 S.drain $ S.concatMap
366− (\_ -> sourceUnfoldrMN inner n)
348+ (\_ -> sourceUnfoldrM inner n)
367− (sourceUnfoldrMN outer n)
349+ (sourceUnfoldrM outer n)
369#ifdef INSPECTION
351#ifdef INSPECTION
370inspect $ hasNoTypeClasses 'concatMap
352inspect $ hasNoTypeClasses 'concatMap
@@ -376,8 +358,8 @@ inspect $ hasNoTypeClasses 'concatMap
376concatMapPure :: Int -> Int -> Int -> IO ()
358concatMapPure :: Int -> Int -> Int -> IO ()
377concatMapPure outer inner n =
359concatMapPure outer inner n =
378 S.drain $ S.concatMap
360 S.drain $ S.concatMap
379− (\_ -> sourceUnfoldrN inner n)
361+ (\_ -> sourceUnfoldr inner n)
380− (sourceUnfoldrN outer n)
362+ (sourceUnfoldr outer n)
382#ifdef INSPECTION
364#ifdef INSPECTION
383inspect $ hasNoTypeClasses 'concatMapPure
365inspect $ hasNoTypeClasses 'concatMapPure
@@ -388,7 +370,7 @@ inspect $ hasNoTypeClasses 'concatMapPure
388{-# INLINE concatMapRepl #-}
370{-# INLINE concatMapRepl #-}
389concatMapRepl :: Int -> Int -> Int -> IO ()
371concatMapRepl :: Int -> Int -> Int -> IO ()
390concatMapRepl outer inner n =
372concatMapRepl 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)
393#ifdef INSPECTION
375#ifdef INSPECTION
394inspect $ hasNoTypeClasses 'concatMapRepl
376inspect $ hasNoTypeClasses 'concatMapRepl
@@ -406,8 +388,8 @@ sourceConcatMapId val n =
406concatStreamsWith :: Int -> Int -> Int -> IO ()
388concatStreamsWith :: Int -> Int -> Int -> IO ()
407concatStreamsWith outer inner n =
389concatStreamsWith outer inner n =
408 S.drain $ S.concatMapBy S.serial
390 S.drain $ S.concatMapBy S.serial
409− (sourceUnfoldrMN inner)
391+ (sourceUnfoldrM inner)
410− (sourceUnfoldrMN outer n)
392+ (sourceUnfoldrM outer n)
412-------------------------------------------------------------------------------
394-------------------------------------------------------------------------------
413-- Nested Composition
395-- Nested Composition
@@ -544,16 +526,16 @@ o_1_space_elimination value =
544o_1_space_nested :: Int -> Benchmark
526o_1_space_nested :: Int -> Benchmark
545o_1_space_nested value =
527o_1_space_nested value =
546 bgroup "nested"
528 bgroup "nested"
547− [ benchFold "toNullAp" toNullApNested (sourceUnfoldrMN value2)
529+ [ benchFold "toNullAp" toNullApNested (sourceUnfoldrM value2)
548− , benchFold "toNull" toNullNested (sourceUnfoldrMN value2)
530+ , benchFold "toNull" toNullNested (sourceUnfoldrM value2)
549− , benchFold "toNull3" toNullNested3 (sourceUnfoldrMN value3)
531+ , benchFold "toNull3" toNullNested3 (sourceUnfoldrM value3)
550− , benchFold "filterAllIn" filterAllInNested (sourceUnfoldrMN value2)
532+ , benchFold "filterAllIn" filterAllInNested (sourceUnfoldrM value2)
551− , benchFold "filterAllOut" filterAllOutNested (sourceUnfoldrMN value2)
533+ , benchFold "filterAllOut" filterAllOutNested (sourceUnfoldrM value2)
552− , benchFold "toNullApPure" toNullApNested (sourceUnfoldrN value2)
534+ , benchFold "toNullApPure" toNullApNested (sourceUnfoldr value2)
553− , benchFold "toNullPure" toNullNested (sourceUnfoldrN value2)
535+ , benchFold "toNullPure" toNullNested (sourceUnfoldr value2)
554− , benchFold "toNull3Pure" toNullNested3 (sourceUnfoldrN value3)
536+ , benchFold "toNull3Pure" toNullNested3 (sourceUnfoldr value3)
555− , benchFold "filterAllInPure" filterAllInNested (sourceUnfoldrN value2)
537+ , benchFold "filterAllInPure" filterAllInNested (sourceUnfoldr value2)
556− , benchFold "filterAllOutPure" filterAllOutNested (sourceUnfoldrN value2)
538+ , benchFold "filterAllOutPure" filterAllOutNested (sourceUnfoldr value2)
559 value2 = round (P.fromIntegral value**(1/2::P.Double)) -- double nested loop
541 value2 = round (P.fromIntegral value**(1/2::P.Double)) -- double nested loop
@@ -577,7 +559,7 @@ o_1_space_transformation value =
577 , benchFold "mapM" (mapM 4) (sourceUnfoldrM value)
559 , benchFold "mapM" (mapM 4) (sourceUnfoldrM value)
578 , benchFold "mapMSerial" (mapMSerial 4) (sourceUnfoldrM value)
560 , benchFold "mapMSerial" (mapMSerial 4) (sourceUnfoldrM value)
579 -- XXX this is horribly slow
561 -- XXX this is horribly slow
580− -- , benchFold "concatMap" (concatMap 4) (sourceUnfoldrMN value16)
562+ -- , benchFold "concatMap" (concatMap 4) (sourceUnfoldrM value16)
@@ -752,12 +734,12 @@ o_n_stack value iterStreamLen maxIters =
752 , bgroup "transformation"
734 , bgroup "transformation"
754 -- XXX why do these need so much stack
736 -- XXX why do these need so much stack
755− benchFold "intersperse" (intersperse maxValue 1) (sourceUnfoldrMN value2)
737+ benchFold "intersperse" (intersperse maxValue 1) (sourceUnfoldrM value2)
756− , benchFold "interspersePure" (intersperse maxValue 1) (sourceUnfoldrN value2)
738+ , benchFold "interspersePure" (intersperse maxValue 1) (sourceUnfoldr value2)
758 , bgroup "transformationX4"
740 , bgroup "transformationX4"
760− benchFold "intersperse" (intersperse maxValue 4) (sourceUnfoldrMN value16)
742+ benchFold "intersperse" (intersperse maxValue 4) (sourceUnfoldrM value16)
762 , bgroup "iterated"
744 , bgroup "iterated"
763 [ benchK "mapM" (iterateMapM iterStreamLen maxIters)
745 [ benchK "mapM" (iterateMapM iterStreamLen maxIters)