@@ -25,8 +25,10 @@ maxValue = value + 1000
2525-------------------------------------------------------------------------------
2626
2727{-# INLINE scan #-}
28+{-# INLINE mapM_ #-}
2829{-# INLINE map #-}
2930{-# INLINE fmap #-}
31+{-# INLINE mapMaybe #-}
3032{-# INLINE filterEven #-}
3133{-# INLINE filterAllOut #-}
3234{-# INLINE filterAllIn #-}
@@ -40,7 +42,7 @@ maxValue = value + 1000
4042{-# INLINE composeAllInFilters #-}
4143{-# INLINE composeAllOutFilters #-}
4244{-# INLINE composeMapAllInFilter #-}
43−scan, map, fmap, filterEven, filterAllOut,
45+scan, mapM_, map, fmap, mapMaybe, filterEven, filterAllOut,
4446 filterAllIn, takeOne, takeAll, takeWhileTrue, dropAll, dropWhileTrue, zip,
4547 concat, composeAllInFilters, composeAllOutFilters,
4648 composeMapAllInFilter
@@ -48,32 +50,36 @@ scan, map, fmap, filterEven, filterAllOut,
4850 => Stream m Int -> m ()
4951
5052{-# INLINE composeMapM #-}
51−composeMapM :: S.MonadAsync m => Stream m Int -> m ()
53+{-# INLINE zipAsync #-}
54+{-# INLINE mapMaybeM #-}
55+composeMapM, zipAsync, mapMaybeM :: S.MonadAsync m => Stream m Int -> m ()
5256
5357{-# INLINE toList #-}
5458{-# INLINE foldr #-}
5559{-# INLINE foldrM #-}
5660toList, foldr, foldrM :: Monad m => Stream m Int -> m [Int]
57−{-# INLINE foldl #-}
58−foldl :: Monad m => Stream m Int -> m Int
61+
5962{-# INLINE last #-}
60−last :: Monad m => Stream m Int -> m (Maybe Int)
63+{-# INLINE maximum #-}
64+{-# INLINE minimum #-}
65+last, minimum, maximum :: Monad m => Stream m Int -> m (Maybe Int)
66+
67+{-# INLINE foldl #-}
68+{-# INLINE length #-}
69+{-# INLINE sum #-}
70+{-# INLINE product #-}
71+foldl, length, sum, product :: Monad m => Stream m Int -> m Int
72+
6173{-# INLINE toNull #-}
6274toNull :: Monad m => (t m Int -> S.SerialT m Int) -> t m Int -> m ()
63−{-# INLINE mapM_ #-}
64−mapM_ :: Monad m => Stream m Int -> m ()
75+
6576{-# INLINE mapM #-}
6677mapM :: (S.IsStream t, S.MonadAsync m)
6778 => (t m Int -> S.SerialT m Int) -> t m Int -> m ()
68−{-# INLINE mapMaybe #-}
69−mapMaybe :: Monad m => Stream m Int -> m ()
70−{-# INLINE mapMaybeM #-}
71−mapMaybeM :: S.MonadAsync m => Stream m Int -> m ()
79+
7280{-# INLINE sequence #-}
7381sequence :: (S.IsStream t, S.MonadAsync m)
7482 => (t m Int -> S.SerialT m Int) -> t m (m Int) -> m ()
75−{-# INLINE zipAsync #-}
76−zipAsync :: S.MonadAsync m => Stream m Int -> m ()
7783
7884-------------------------------------------------------------------------------
7985-- Stream generation and elimination
@@ -154,6 +160,11 @@ foldr = S.foldr (:) []
154160foldrM = S.foldrM (\a xs -> return (a : xs)) []
155161foldl = S.foldl' (+) 0
156162last = S.last
163+length = S.length
164+sum = S.sum
165+product = S.product
166+maximum = S.maximum
167+minimum = S.minimum
157168
158169-------------------------------------------------------------------------------
159170-- Transformation