@@ -426,7 +426,7 @@ uncons m =
426 let stop = return Nothing
426 let stop = return Nothing
427 single a = return (Just (a, nil))
427 single a = return (Just (a, nil))
428 yieldk a r = return (Just (a, fromStream r))
428 yieldk a r = return (Just (a, fromStream r))
429− in unStreamShared (toStream m) defState stop single yieldk
429+ in unStream (toStream m) defState stop single yieldk
431-------------------------------------------------------------------------------
431-------------------------------------------------------------------------------
432-- Generation
432-- Generation
@@ -543,7 +543,7 @@ foldr step acc m = go (toStream m)
543 let stop = return acc
543 let stop = return acc
544 single a = return (step a acc)
544 single a = return (step a acc)
545 yieldk a r = go r >>= \b -> return (step a b)
545 yieldk a r = go r >>= \b -> return (step a b)
546− in unStreamShared m1 defState stop single yieldk
546+ in unStream m1 defState stop single yieldk
548-- | Lazy right fold with a monadic step function.
548-- | Lazy right fold with a monadic step function.
549{-# INLINE foldrM #-}
549{-# INLINE foldrM #-}
@@ -554,7 +554,7 @@ foldrM step acc m = go (toStream m)
554 let stop = return acc
554 let stop = return acc
555 single a = step a acc
555 single a = step a acc
556 yieldk a r = go r >>= step a
556 yieldk a r = go r >>= step a
557− in unStreamShared m1 defState stop single yieldk
557+ in unStream m1 defState stop single yieldk
559{-# INLINE foldr1 #-}
559{-# INLINE foldr1 #-}
560foldr1 :: (IsStream t, Monad m) => (a -> a -> a) -> t m a -> m (Maybe a)
560foldr1 :: (IsStream t, Monad m) => (a -> a -> a) -> t m a -> m (Maybe a)
@@ -568,7 +568,7 @@ foldr1 step m = do
568 let stp = return p
568 let stp = return p
569 single a = return $ step a p
569 single a = return $ step a p
570 yieldk a r = fmap (step p) (go a r)
570 yieldk a r = fmap (step p) (go a r)
571− in unStreamShared m1 defState stp single yieldk
571+ in unStream m1 defState stp single yieldk
573-- | Strict left fold with an extraction function. Like the standard strict
573-- | Strict left fold with an extraction function. Like the standard strict
574-- left fold, but applies a user supplied extraction function (the third
574-- left fold, but applies a user supplied extraction function (the third
@@ -597,8 +597,8 @@ foldx step begin done m = get $ go (toStream m) begin
597 single a = sng $ step acc a
597 single a = sng $ step acc a
598 yieldk a r =
598 yieldk a r =
599 let stream = go r (step acc a)
599 let stream = go r (step acc a)
600− in unStreamShared stream defState undefined sng yld
600+ in unStream stream defState undefined sng yld
601− in unStreamShared m1 defState stop single yieldk
601+ in unStream m1 defState stop single yieldk
603-- | Strict left associative fold.
603-- | Strict left associative fold.
604{-# INLINE foldl' #-}
604{-# INLINE foldl' #-}
@@ -615,7 +615,7 @@ foldxM step begin done m = go begin (toStream m)
615 let stop = acc >>= done
615 let stop = acc >>= done
616 single a = acc >>= \b -> step b a >>= done
616 single a = acc >>= \b -> step b a >>= done
617 yieldk a r = acc >>= \b -> step b a >>= \x -> go (return x) r
617 yieldk a r = acc >>= \b -> step b a >>= \x -> go (return x) r
618− in unStreamShared m1 defState stop single yieldk
618+ in unStream m1 defState stop single yieldk
620-- | Like 'foldl'' but with a monadic step function.
620-- | Like 'foldl'' but with a monadic step function.
621foldlM' :: (IsStream t, Monad m) => (b -> a -> m b) -> b -> t m a -> m b
621foldlM' :: (IsStream t, Monad m) => (b -> a -> m b) -> b -> t m a -> m b
@@ -633,7 +633,7 @@ runStream m = go (toStream m)
633 let stop = return ()
633 let stop = return ()
634 single _ = return ()
634 single _ = return ()
635 yieldk _ r = go (toStream r)
635 yieldk _ r = go (toStream r)
636− in unStreamShared m1 defState stop single yieldk
636+ in unStream m1 defState stop single yieldk
638{-# INLINE null #-}
638{-# INLINE null #-}
639null :: (IsStream t, Monad m) => t m a -> m Bool
639null :: (IsStream t, Monad m) => t m a -> m Bool
@@ -641,7 +641,7 @@ null m =
641 let stop = return True
641 let stop = return True
642 single _ = return False
642 single _ = return False
643 yieldk _ _ = return False
643 yieldk _ _ = return False
644− in unStreamShared (toStream m) defState stop single yieldk
644+ in unStream (toStream m) defState stop single yieldk
646{-# INLINE head #-}
646{-# INLINE head #-}
647head :: (IsStream t, Monad m) => t m a -> m (Maybe a)
647head :: (IsStream t, Monad m) => t m a -> m (Maybe a)
@@ -649,7 +649,7 @@ head m =
649 let stop = return Nothing
649 let stop = return Nothing
650 single a = return (Just a)
650 single a = return (Just a)
651 yieldk a _ = return (Just a)
651 yieldk a _ = return (Just a)
652− in unStreamShared (toStream m) defState stop single yieldk
652+ in unStream (toStream m) defState stop single yieldk
654{-# INLINE tail #-}
654{-# INLINE tail #-}
655tail :: (IsStream t, Monad m) => t m a -> m (Maybe (t m a))
655tail :: (IsStream t, Monad m) => t m a -> m (Maybe (t m a))
@@ -657,7 +657,7 @@ tail m =
657 let stop = return Nothing
657 let stop = return Nothing
658 single _ = return $ Just nil
658 single _ = return $ Just nil
659 yieldk _ r = return $ Just $ fromStream r
659 yieldk _ r = return $ Just $ fromStream r
660− in unStreamShared (toStream m) defState stop single yieldk
660+ in unStream (toStream m) defState stop single yieldk
662{-# INLINE init #-}
662{-# INLINE init #-}
663init :: (IsStream t, Monad m) => t m a -> m (Maybe (t m a))
663init :: (IsStream t, Monad m) => t m a -> m (Maybe (t m a))
@@ -671,7 +671,7 @@ init m = go1 (toStream m)
671 go p m1 = Stream $ \_ stp sng yld ->
671 go p m1 = Stream $ \_ stp sng yld ->
672 let single _ = sng p
672 let single _ = sng p
673 yieldk a x = yld p $ go a x
673 yieldk a x = yld p $ go a x
674− in unStreamShared m1 defState stp single yieldk
674+ in unStream m1 defState stp single yieldk
676{-# INLINE elem #-}
676{-# INLINE elem #-}
677elem :: (IsStream t, Monad m, Eq a) => a -> t m a -> m Bool
677elem :: (IsStream t, Monad m, Eq a) => a -> t m a -> m Bool
@@ -681,7 +681,7 @@ elem e m = go (toStream m)
681 let stop = return False
681 let stop = return False
682 single a = return (a == e)
682 single a = return (a == e)
683 yieldk a r = if a == e then return True else go r
683 yieldk a r = if a == e then return True else go r
684− in unStreamShared m1 defState stop single yieldk
684+ in unStream m1 defState stop single yieldk
686{-# INLINE notElem #-}
686{-# INLINE notElem #-}
687notElem :: (IsStream t, Monad m, Eq a) => a -> t m a -> m Bool
687notElem :: (IsStream t, Monad m, Eq a) => a -> t m a -> m Bool
@@ -691,7 +691,7 @@ notElem e m = go (toStream m)
691 let stop = return True
691 let stop = return True
692 single a = return (a /= e)
692 single a = return (a /= e)
693 yieldk a r = if a == e then return False else go r
693 yieldk a r = if a == e then return False else go r
694− in unStreamShared m1 defState stop single yieldk
694+ in unStream m1 defState stop single yieldk
696all :: (IsStream t, Monad m) => (a -> Bool) -> t m a -> m Bool
696all :: (IsStream t, Monad m) => (a -> Bool) -> t m a -> m Bool
697all p m = go (toStream m)
697all p m = go (toStream m)
@@ -701,7 +701,7 @@ all p m = go (toStream m)
701 | otherwise = return False
701 | otherwise = return False
702 yieldk a r | p a = go r
702 yieldk a r | p a = go r
703 | otherwise = return False
703 | otherwise = return False
704− in unStreamShared m1 defState (return True) single yieldk
704+ in unStream m1 defState (return True) single yieldk
706any :: (IsStream t, Monad m) => (a -> Bool) -> t m a -> m Bool
706any :: (IsStream t, Monad m) => (a -> Bool) -> t m a -> m Bool
707any p m = go (toStream m)
707any p m = go (toStream m)
@@ -711,7 +711,7 @@ any p m = go (toStream m)
711 | otherwise = return False
711 | otherwise = return False
712 yieldk a r | p a = return True
712 yieldk a r | p a = return True
713 | otherwise = go r
713 | otherwise = go r
714− in unStreamShared m1 defState (return False) single yieldk
714+ in unStream m1 defState (return False) single yieldk
716-- | Extract the last element of the stream, if any.
716-- | Extract the last element of the stream, if any.
717{-# INLINE last #-}
717{-# INLINE last #-}
@@ -726,7 +726,7 @@ minimum m = go Nothing (toStream m)
726 let stop = return Nothing
726 let stop = return Nothing
727 single a = return (Just a)
727 single a = return (Just a)
728 yieldk a r = go (Just a) r
728 yieldk a r = go (Just a) r
729− in unStreamShared m1 defState stop single yieldk
729+ in unStream m1 defState stop single yieldk
731 go (Just res) m1 =
731 go (Just res) m1 =
732 let stop = return (Just res)
732 let stop = return (Just res)
@@ -738,7 +738,7 @@ minimum m = go Nothing (toStream m)
738 if res <= a
738 if res <= a
739 then go (Just res) r
739 then go (Just res) r
740 else go (Just a) r
740 else go (Just a) r
741− in unStreamShared m1 defState stop single yieldk
741+ in unStream m1 defState stop single yieldk
743{-# INLINE minimumBy #-}
743{-# INLINE minimumBy #-}
@@ -750,7 +750,7 @@ minimumBy cmp m = go Nothing (toStream m)
750 let stop = return Nothing
750 let stop = return Nothing
751 single a = return (Just a)
751 single a = return (Just a)
752 yieldk a r = go (Just a) r
752 yieldk a r = go (Just a) r
753− in unStreamShared m1 defState stop single yieldk
753+ in unStream m1 defState stop single yieldk
755 go (Just res) m1 =
755 go (Just res) m1 =
756 let stop = return (Just res)
756 let stop = return (Just res)
@@ -760,7 +760,7 @@ minimumBy cmp m = go Nothing (toStream m)
760 yieldk a r = case cmp res a of
760 yieldk a r = case cmp res a of
761 GT -> go (Just a) r
761 GT -> go (Just a) r
762 _ -> go (Just res) r
762 _ -> go (Just res) r
763− in unStreamShared m1 defState stop single yieldk
763+ in unStream m1 defState stop single yieldk
765{-# INLINE maximum #-}
765{-# INLINE maximum #-}
766maximum :: (IsStream t, Monad m, Ord a) => t m a -> m (Maybe a)
766maximum :: (IsStream t, Monad m, Ord a) => t m a -> m (Maybe a)
@@ -770,7 +770,7 @@ maximum m = go Nothing (toStream m)
770 let stop = return Nothing
770 let stop = return Nothing
771 single a = return (Just a)
771 single a = return (Just a)
772 yieldk a r = go (Just a) r
772 yieldk a r = go (Just a) r
773− in unStreamShared m1 defState stop single yieldk
773+ in unStream m1 defState stop single yieldk
775 go (Just res) m1 =
775 go (Just res) m1 =
776 let stop = return (Just res)
776 let stop = return (Just res)
@@ -782,7 +782,7 @@ maximum m = go Nothing (toStream m)
782 if res <= a
782 if res <= a
783 then go (Just a) r
783 then go (Just a) r
784 else go (Just res) r
784 else go (Just res) r
785− in unStreamShared m1 defState stop single yieldk
785+ in unStream m1 defState stop single yieldk
787{-# INLINE maximumBy #-}
787{-# INLINE maximumBy #-}
788maximumBy :: (IsStream t, Monad m) => (a -> a -> Ordering) -> t m a -> m (Maybe a)
788maximumBy :: (IsStream t, Monad m) => (a -> a -> Ordering) -> t m a -> m (Maybe a)
@@ -792,7 +792,7 @@ maximumBy cmp m = go Nothing (toStream m)
792 let stop = return Nothing
792 let stop = return Nothing
793 single a = return (Just a)
793 single a = return (Just a)
794 yieldk a r = go (Just a) r
794 yieldk a r = go (Just a) r
795− in unStreamShared m1 defState stop single yieldk
795+ in unStream m1 defState stop single yieldk
797 go (Just res) m1 =
797 go (Just res) m1 =
798 let stop = return (Just res)
798 let stop = return (Just res)
@@ -802,7 +802,7 @@ maximumBy cmp m = go Nothing (toStream m)
802 yieldk a r = case cmp res a of
802 yieldk a r = case cmp res a of
803 GT -> go (Just res) r
803 GT -> go (Just res) r
804 _ -> go (Just a) r
804 _ -> go (Just a) r
805− in unStreamShared m1 defState stop single yieldk
805+ in unStream m1 defState stop single yieldk
807{-# INLINE (!!) #-}
807{-# INLINE (!!) #-}
808(!!) :: (IsStream t, Monad m) => t m a -> Int -> m (Maybe a)
808(!!) :: (IsStream t, Monad m) => t m a -> Int -> m (Maybe a)
@@ -814,7 +814,7 @@ m !! i = go i (toStream m)
814 yieldk a x | n < 0 = return Nothing
814 yieldk a x | n < 0 = return Nothing
815 | n == 0 = return $ Just a
815 | n == 0 = return $ Just a
816 | otherwise = go (n - 1) x
816 | otherwise = go (n - 1) x
817− in unStreamShared m1 defState (return Nothing) single yieldk
817+ in unStream m1 defState (return Nothing) single yieldk
819{-# INLINE lookup #-}
819{-# INLINE lookup #-}
820lookup :: (IsStream t, Monad m, Eq a) => a -> t m (a, b) -> m (Maybe b)
820lookup :: (IsStream t, Monad m, Eq a) => a -> t m (a, b) -> m (Maybe b)
@@ -825,7 +825,7 @@ lookup e m = go (toStream m)
825 | otherwise = return Nothing
825 | otherwise = return Nothing
826 yieldk (a, b) x | a == e = return $ Just b
826 yieldk (a, b) x | a == e = return $ Just b
827 | otherwise = go x
827 | otherwise = go x
828− in unStreamShared m1 defState (return Nothing) single yieldk
828+ in unStream m1 defState (return Nothing) single yieldk
830{-# INLINE findM #-}
830{-# INLINE findM #-}
831findM :: (IsStream t, Monad m) => (a -> m Bool) -> t m a -> m (Maybe a)
831findM :: (IsStream t, Monad m) => (a -> m Bool) -> t m a -> m (Maybe a)
@@ -838,7 +838,7 @@ findM p m = go (toStream m)
838 yieldk a x = do
838 yieldk a x = do
840 if b then return $ Just a else go x
840 if b then return $ Just a else go x
841− in unStreamShared m1 defState (return Nothing) single yieldk
841+ in unStream m1 defState (return Nothing) single yieldk
843{-# INLINE find #-}
843{-# INLINE find #-}
844find :: (IsStream t, Monad m) => (a -> Bool) -> t m a -> m (Maybe a)
844find :: (IsStream t, Monad m) => (a -> Bool) -> t m a -> m (Maybe a)
@@ -868,7 +868,7 @@ mapM_ f m = go (toStream m)
868 let stop = return ()
868 let stop = return ()
869 single a = void (f a)
869 single a = void (f a)
870 yieldk a r = f a >> go r
870 yieldk a r = f a >> go r
871− in unStreamShared m1 defState stop single yieldk
871+ in unStream m1 defState stop single yieldk
873------------------------------------------------------------------------------
873------------------------------------------------------------------------------
874-- Converting folds
874-- Converting folds
@@ -1154,7 +1154,7 @@ the m = do
1154 | otherwise = return Nothing
1154 | otherwise = return Nothing
1155 yieldk a r | h == a = go h r
1155 yieldk a r | h == a = go h r
1156 | otherwise = return Nothing
1156 | otherwise = return Nothing
1157− in unStreamShared m1 defState (return $ Just h) single yieldk
1157+ in unStream m1 defState (return $ Just h) single yieldk
1159------------------------------------------------------------------------------
1159------------------------------------------------------------------------------
1160-- Semigroup
1160-- Semigroup