@@ -31,12 +31,10 @@ module Streamly.Internal.Data.Fold
41 -- * Folds
39 -- * Folds
42 -- ** Identity
40 -- ** Identity
@@ -700,7 +698,7 @@ sum = foldl' (+) 0
700-- /Since 0.8.0 (Added 'Eq' constraint)/
698-- /Since 0.8.0 (Added 'Eq' constraint)/
701{-# INLINE product #-}
699{-# INLINE product #-}
702product :: (Monad m, Num a, Eq a) => Fold m a a
700product :: (Monad m, Num a, Eq a) => Fold m a a
703−product = mkFold_ step (Partial 1)
701+product = foldt' step (Partial 1) id
@@ -1005,7 +1003,7 @@ drainN n = take n drain
1005-- /Pre-release/
1003-- /Pre-release/
1006{-# INLINE genericIndex #-}
1004{-# INLINE genericIndex #-}
1007genericIndex :: (Integral i, Monad m) => i -> Fold m a (Maybe a)
1005genericIndex :: (Integral i, Monad m) => i -> Fold m a (Maybe a)
1008−genericIndex i = mkFold step (Partial 0) (const Nothing)
1006+genericIndex i = foldt' step (Partial 0) (const Nothing)
@@ -1029,7 +1027,7 @@ index = genericIndex
1030{-# INLINE maybe #-}
1028{-# INLINE maybe #-}
1031maybe :: Monad m => (a -> Maybe b) -> Fold m a (Maybe b)
1029maybe :: Monad m => (a -> Maybe b) -> Fold m a (Maybe b)
1032−maybe f = mkFold_ (const (Done . f)) (Partial Nothing)
1030+maybe f = foldt' (const (Done . f)) (Partial Nothing) id
1034-- Naming notes:
1032-- Naming notes:
@@ -1079,7 +1077,7 @@ head = one
1079-- @since 0.7.0
1077-- @since 0.7.0
1080{-# INLINE find #-}
1078{-# INLINE find #-}
1081find :: Monad m => (a -> Bool) -> Fold m a (Maybe a)
1079find :: Monad m => (a -> Bool) -> Fold m a (Maybe a)
1082−find predicate = mkFold step (Partial ()) (const Nothing)
1080+find predicate = foldt' step (Partial ()) (const Nothing)
@@ -1096,7 +1094,7 @@ find predicate = mkFold step (Partial ()) (const Nothing)
1096-- @since 0.7.0
1094-- @since 0.7.0
1097{-# INLINE lookup #-}
1095{-# INLINE lookup #-}
1098lookup :: (Eq a, Monad m) => a -> Fold m (a,b) (Maybe b)
1096lookup :: (Eq a, Monad m) => a -> Fold m (a,b) (Maybe b)
1099−lookup a0 = mkFold step (Partial ()) (const Nothing)
1097+lookup a0 = foldt' step (Partial ()) (const Nothing)
@@ -1110,7 +1108,7 @@ lookup a0 = mkFold step (Partial ()) (const Nothing)
1110-- @since 0.7.0
1108-- @since 0.7.0
1111{-# INLINE findIndex #-}
1109{-# INLINE findIndex #-}
1112findIndex :: Monad m => (a -> Bool) -> Fold m a (Maybe Int)
1110findIndex :: Monad m => (a -> Bool) -> Fold m a (Maybe Int)
1113−findIndex predicate = mkFold step (Partial 0) (const Nothing)
1111+findIndex predicate = foldt' step (Partial 0) (const Nothing)
@@ -1156,7 +1154,7 @@ elemIndex a = findIndex (a ==)
1156-- @since 0.7.0
1154-- @since 0.7.0
1157{-# INLINE null #-}
1155{-# INLINE null #-}
1158null :: Monad m => Fold m a Bool
1156null :: Monad m => Fold m a Bool
1159−null = mkFold (\() _ -> Done False) (Partial ()) (const True)
1157+null = foldt' (\() _ -> Done False) (Partial ()) (const True)
1161-- | Returns 'True' if any of the elements of a stream satisfies a predicate.
1159-- | Returns 'True' if any of the elements of a stream satisfies a predicate.
@@ -1168,7 +1166,7 @@ null = mkFold (\() _ -> Done False) (Partial ()) (const True)
1168-- @since 0.7.0
1166-- @since 0.7.0
1169{-# INLINE any #-}
1167{-# INLINE any #-}
1170any :: Monad m => (a -> Bool) -> Fold m a Bool
1168any :: Monad m => (a -> Bool) -> Fold m a Bool
1171−any predicate = mkFold_ step initial
1169+any predicate = foldt' step initial id
@@ -1198,7 +1196,7 @@ elem a = any (a ==)
1198-- @since 0.7.0
1196-- @since 0.7.0
1199{-# INLINE all #-}
1197{-# INLINE all #-}
1200all :: Monad m => (a -> Bool) -> Fold m a Bool
1198all :: Monad m => (a -> Bool) -> Fold m a Bool
1201−all predicate = mkFold_ step initial
1199+all predicate = foldt' step initial id