@@ -314,7 +314,7 @@ fromIndicesM gen = go 0
314fromIndices :: IsStream t => (Int -> a) -> t m a
314fromIndices :: IsStream t => (Int -> a) -> t m a
315fromIndices gen = go 0
315fromIndices gen = go 0
317− go n = (gen n) `cons` go (n + 1)
317+ go n = gen n `cons` go (n + 1)
319{-# INLINE iterate #-}
319{-# INLINE iterate #-}
320iterate :: IsStream t => (a -> a) -> a -> t m a
320iterate :: IsStream t => (a -> a) -> a -> t m a
@@ -367,7 +367,7 @@ foldr step acc = foldrM (\x xs -> xs >>= \b -> return (step x b)) (return acc)
367{-# INLINE foldrT #-}
367{-# INLINE foldrT #-}
368foldrT :: (IsStream t, Monad m, Monad (s m), MonadTrans s)
368foldrT :: (IsStream t, Monad m, Monad (s m), MonadTrans s)
369 => (a -> s m b -> s m b) -> s m b -> t m a -> s m b
369 => (a -> s m b -> s m b) -> s m b -> t m a -> s m b
370−foldrT step final m = go m
370+foldrT step final = go
372 go m1 = do
372 go m1 = do
373 res <- lift $ uncons m1
373 res <- lift $ uncons m1
@@ -394,7 +394,7 @@ foldr1 step m = do
394{-# INLINABLE foldlMx' #-}
394{-# INLINABLE foldlMx' #-}
395foldlMx' :: (IsStream t, Monad m)
395foldlMx' :: (IsStream t, Monad m)
396 => (x -> a -> m x) -> m x -> (x -> m b) -> t m a -> m b
396 => (x -> a -> m x) -> m x -> (x -> m b) -> t m a -> m b
397−foldlMx' step begin done m = go begin m
397+foldlMx' step begin done = go begin
399 go !acc m1 =
399 go !acc m1 =
400 let stop = acc >>= done
400 let stop = acc >>= done
@@ -431,7 +431,7 @@ foldlM' step begin = foldlMx' step begin return
431-- | Lazy left fold to a stream.
431-- | Lazy left fold to a stream.
432{-# INLINE foldlS #-}
432{-# INLINE foldlS #-}
433foldlS :: IsStream t => (t m b -> a -> t m b) -> t m b -> t m a -> t m b
433foldlS :: IsStream t => (t m b -> a -> t m b) -> t m b -> t m a -> t m b
434−foldlS step begin m = go begin m
434+foldlS step = go
436 go acc rest = mkStream $ \st yld sng stp ->
436 go acc rest = mkStream $ \st yld sng stp ->
437 let run x = foldStream st yld sng stp x
437 let run x = foldStream st yld sng stp x
@@ -444,7 +444,7 @@ foldlS step begin m = go begin m
444{-# INLINE foldlT #-}
444{-# INLINE foldlT #-}
445foldlT :: (IsStream t, Monad m, Monad (s m), MonadTrans s)
445foldlT :: (IsStream t, Monad m, Monad (s m), MonadTrans s)
446 => (s m b -> a -> s m b) -> s m b -> t m a -> s m b
446 => (s m b -> a -> s m b) -> s m b -> t m a -> s m b
447−foldlT step begin m = go begin m
447+foldlT step = go
449 go acc m1 = do
449 go acc m1 = do
450 res <- lift $ uncons m1
450 res <- lift $ uncons m1
@@ -588,7 +588,7 @@ mfix f = mkStream $ \st yld sng stp ->
589{-# INLINE init #-}
589{-# INLINE init #-}
590init :: (IsStream t, Monad m) => t m a -> m (Maybe (t m a))
590init :: (IsStream t, Monad m) => t m a -> m (Maybe (t m a))
591−init m = go1 m
591+init = go1
593 go1 m1 = do
593 go1 m1 = do
594 r <- uncons m1
594 r <- uncons m1
@@ -602,7 +602,7 @@ init m = go1 m
603{-# INLINE elem #-}
603{-# INLINE elem #-}
604elem :: (IsStream t, Monad m, Eq a) => a -> t m a -> m Bool
604elem :: (IsStream t, Monad m, Eq a) => a -> t m a -> m Bool
605−elem e m = go m
605+elem e = go
608 let stop = return False
608 let stop = return False
@@ -612,7 +612,7 @@ elem e m = go m
613{-# INLINE notElem #-}
613{-# INLINE notElem #-}
614notElem :: (IsStream t, Monad m, Eq a) => a -> t m a -> m Bool
614notElem :: (IsStream t, Monad m, Eq a) => a -> t m a -> m Bool
615−notElem e m = go m
615+notElem e = go
618 let stop = return True
618 let stop = return True
@@ -622,7 +622,7 @@ notElem e m = go m
623{-# INLINABLE all #-}
623{-# INLINABLE all #-}
624all :: (IsStream t, Monad m) => (a -> Bool) -> t m a -> m Bool
624all :: (IsStream t, Monad m) => (a -> Bool) -> t m a -> m Bool
625−all p m = go m
625+all p = go
628 let single a | p a = return True
628 let single a | p a = return True
@@ -633,7 +633,7 @@ all p m = go m
634{-# INLINABLE any #-}
634{-# INLINABLE any #-}
635any :: (IsStream t, Monad m) => (a -> Bool) -> t m a -> m Bool
635any :: (IsStream t, Monad m) => (a -> Bool) -> t m a -> m Bool
636−any p m = go m
636+any p = go
639 let single a | p a = return True
639 let single a | p a = return True
@@ -649,7 +649,7 @@ last = foldlx' (\_ y -> Just y) Nothing id
650{-# INLINE minimum #-}
650{-# INLINE minimum #-}
651minimum :: (IsStream t, Monad m, Ord a) => t m a -> m (Maybe a)
651minimum :: (IsStream t, Monad m, Ord a) => t m a -> m (Maybe a)
652−minimum m = go Nothing m
652+minimum = go Nothing
654 go Nothing m1 =
654 go Nothing m1 =
655 let stop = return Nothing
655 let stop = return Nothing
@@ -673,7 +673,7 @@ minimum m = go Nothing m
674 :: (IsStream t, Monad m)
674 :: (IsStream t, Monad m)
675 => (a -> a -> Ordering) -> t m a -> m (Maybe a)
675 => (a -> a -> Ordering) -> t m a -> m (Maybe a)
676−minimumBy cmp m = go Nothing m
676+minimumBy cmp = go Nothing
678 go Nothing m1 =
678 go Nothing m1 =
679 let stop = return Nothing
679 let stop = return Nothing
@@ -693,7 +693,7 @@ minimumBy cmp m = go Nothing m
694{-# INLINE maximum #-}
694{-# INLINE maximum #-}
695maximum :: (IsStream t, Monad m, Ord a) => t m a -> m (Maybe a)
695maximum :: (IsStream t, Monad m, Ord a) => t m a -> m (Maybe a)
696−maximum m = go Nothing m
696+maximum = go Nothing
698 go Nothing m1 =
698 go Nothing m1 =
699 let stop = return Nothing
699 let stop = return Nothing
@@ -715,7 +715,7 @@ maximum m = go Nothing m
716{-# INLINE maximumBy #-}
716{-# INLINE maximumBy #-}
717maximumBy :: (IsStream t, Monad m) => (a -> a -> Ordering) -> t m a -> m (Maybe a)
717maximumBy :: (IsStream t, Monad m) => (a -> a -> Ordering) -> t m a -> m (Maybe a)
718−maximumBy cmp m = go Nothing m
718+maximumBy cmp = go Nothing
720 go Nothing m1 =
720 go Nothing m1 =
721 let stop = return Nothing
721 let stop = return Nothing
@@ -747,7 +747,7 @@ m !! i = go i m
748{-# INLINE lookup #-}
748{-# INLINE lookup #-}
749lookup :: (IsStream t, Monad m, Eq a) => a -> t m (a, b) -> m (Maybe b)
749lookup :: (IsStream t, Monad m, Eq a) => a -> t m (a, b) -> m (Maybe b)
750−lookup e m = go m
750+lookup e = go
753 let single (a, b) | a == e = return $ Just b
753 let single (a, b) | a == e = return $ Just b
@@ -758,7 +758,7 @@ lookup e m = go m
759{-# INLINE findM #-}
759{-# INLINE findM #-}
760findM :: (IsStream t, Monad m) => (a -> m Bool) -> t m a -> m (Maybe a)
760findM :: (IsStream t, Monad m) => (a -> m Bool) -> t m a -> m (Maybe a)
761−findM p m = go m
761+findM p = go
764 let single a = do
764 let single a = do
@@ -793,7 +793,7 @@ findIndices p = go 0
793-- output of the action.
793-- output of the action.
794{-# INLINE mapM_ #-}
794{-# INLINE mapM_ #-}
795mapM_ :: (IsStream t, Monad m) => (a -> m b) -> t m a -> m ()
795mapM_ :: (IsStream t, Monad m) => (a -> m b) -> t m a -> m ()
796−mapM_ f m = go m
796+mapM_ f = go
799 let stop = return ()
799 let stop = return ()
@@ -851,7 +851,7 @@ scanl' step begin = scanlx' step begin id
852{-# INLINE filter #-}
852{-# INLINE filter #-}
853filter :: IsStream t => (a -> Bool) -> t m a -> t m a
853filter :: IsStream t => (a -> Bool) -> t m a -> t m a
854−filter p m = go m
854+filter p = go
856 go m1 = mkStream $ \st yld sng stp ->
856 go m1 = mkStream $ \st yld sng stp ->
857 let single a | p a = sng a
857 let single a | p a = sng a
@@ -862,7 +862,7 @@ filter p m = go m
863{-# INLINE take #-}
863{-# INLINE take #-}
864take :: IsStream t => Int -> t m a -> t m a
864take :: IsStream t => Int -> t m a -> t m a
865−take n m = go n m
865+take = go
867 go n1 m1 = mkStream $ \st yld sng stp ->
867 go n1 m1 = mkStream $ \st yld sng stp ->
868 let yieldk a r = yld a (go (n1 - 1) r)
868 let yieldk a r = yld a (go (n1 - 1) r)
@@ -872,7 +872,7 @@ take n m = go n m
873{-# INLINE takeWhile #-}
873{-# INLINE takeWhile #-}
874takeWhile :: IsStream t => (a -> Bool) -> t m a -> t m a
874takeWhile :: IsStream t => (a -> Bool) -> t m a -> t m a
875−takeWhile p m = go m
875+takeWhile p = go
877 go m1 = mkStream $ \st yld sng stp ->
877 go m1 = mkStream $ \st yld sng stp ->
878 let single a | p a = sng a
878 let single a | p a = sng a
@@ -895,7 +895,7 @@ drop n m = fromStream $ unShare (go n (toStream m))
896{-# INLINE dropWhile #-}
896{-# INLINE dropWhile #-}
897dropWhile :: IsStream t => (a -> Bool) -> t m a -> t m a
897dropWhile :: IsStream t => (a -> Bool) -> t m a -> t m a
898−dropWhile p m = go m
898+dropWhile p = go
900 go m1 = mkStream $ \st yld sng stp ->
900 go m1 = mkStream $ \st yld sng stp ->
901 let single a | p a = stp
901 let single a | p a = stp
@@ -912,7 +912,7 @@ dropWhile p m = go m
912-- other stream types to overload it.
912-- other stream types to overload it.
913{-# INLINE sequence #-}
913{-# INLINE sequence #-}
914sequence :: (IsStream t, MonadAsync m) => t m (m a) -> t m a
914sequence :: (IsStream t, MonadAsync m) => t m (m a) -> t m a
915−sequence m = go m
915+sequence = go
917 go m1 = mkStream $ \st yld sng stp ->
917 go m1 = mkStream $ \st yld sng stp ->
918 let single ma = ma >>= sng
918 let single ma = ma >>= sng
@@ -925,7 +925,7 @@ sequence m = go m
926{-# INLINE intersperseM #-}
926{-# INLINE intersperseM #-}
927intersperseM :: (IsStream t, MonadAsync m) => m a -> t m a -> t m a
927intersperseM :: (IsStream t, MonadAsync m) => m a -> t m a -> t m a
928−intersperseM a m = prependingStart m
928+intersperseM a = prependingStart
930 prependingStart m1 = mkStream $ \st yld sng stp ->
930 prependingStart m1 = mkStream $ \st yld sng stp ->
931 let yieldk i x = foldStreamShared st yld sng stp $ return i |: go x
931 let yieldk i x = foldStreamShared st yld sng stp $ return i |: go x
@@ -941,7 +941,7 @@ intersperse a = intersperseM (return a)
942{-# INLINE insertBy #-}
942{-# INLINE insertBy #-}
943insertBy :: IsStream t => (a -> a -> Ordering) -> a -> t m a -> t m a
943insertBy :: IsStream t => (a -> a -> Ordering) -> a -> t m a -> t m a
944−insertBy cmp x m = go m
944+insertBy cmp x = go
946 go m1 = mkStream $ \st yld _ _ ->
946 go m1 = mkStream $ \st yld _ _ ->
947 let single a = case cmp x a of
947 let single a = case cmp x a of
@@ -959,7 +959,7 @@ insertBy cmp x m = go m
960{-# INLINE deleteBy #-}
960{-# INLINE deleteBy #-}
961deleteBy :: IsStream t => (a -> a -> Bool) -> a -> t m a -> t m a
961deleteBy :: IsStream t => (a -> a -> Bool) -> a -> t m a -> t m a
962−deleteBy eq x m = go m
962+deleteBy eq x = go
964 go m1 = mkStream $ \st yld sng stp ->
964 go m1 = mkStream $ \st yld sng stp ->
965 let single a = if eq x a then stp else sng a
965 let single a = if eq x a then stp else sng a
@@ -982,12 +982,10 @@ reverse = foldlS (flip cons) nil
983{-# INLINE mapMaybe #-}
983{-# INLINE mapMaybe #-}
984mapMaybe :: IsStream t => (a -> Maybe b) -> t m a -> t m b
984mapMaybe :: IsStream t => (a -> Maybe b) -> t m a -> t m b
985−mapMaybe f m = go m
985+mapMaybe f = go
987 go m1 = mkStream $ \st yld sng stp ->
987 go m1 = mkStream $ \st yld sng stp ->
988− let single a = case f a of
988+ let single a = maybe stp sng (f a)
991 yieldk a r = case f a of
989 yieldk a r = case f a of
992 Just b -> yld b $ go r
990 Just b -> yld b $ go r
993 Nothing -> foldStream (adaptState st) yieldk single stp r
991 Nothing -> foldStream (adaptState st) yieldk single stp r
@@ -1018,7 +1016,7 @@ zipWith f = go
1018-- @since 0.1.0
1016-- @since 0.1.0
1019{-# INLINABLE zipWithM #-}
1017{-# INLINABLE zipWithM #-}
1020zipWithM :: (IsStream t, Monad m) => (a -> b -> m c) -> t m a -> t m b -> t m c
1018zipWithM :: (IsStream t, Monad m) => (a -> b -> m c) -> t m a -> t m b -> t m c
1021−zipWithM f m1 m2 = go m1 m2
1019+zipWithM f = go
1023 go mx my = mkStream $ \st yld sng stp -> do
1021 go mx my = mkStream $ \st yld sng stp -> do
1024 let merge a ra =
1022 let merge a ra =