@@ -21,38 +21,24 @@ module Streamly.Internal.Data.Stream.Zip
21 ZipStream (..)
21 ZipStream (..)
22 , ZipSerialM
22 , ZipSerialM
23 , ZipSerial
23 , ZipSerial
29import Control.DeepSeq (NFData(..), NFData1(..))
27import Control.DeepSeq (NFData(..), NFData1(..))
30import Data.Functor.Identity (Identity(..))
28import Data.Functor.Identity (Identity(..))
31import GHC.Exts (IsList(..), IsString(..))
29import GHC.Exts (IsList(..), IsString(..))
32−import Streamly.Internal.Data.Stream.Type (Stream, toStreamD, fromStreamD)
30+import Streamly.Internal.Data.Stream.Type (Stream)
33import Text.Read
31import Text.Read
34 ( Lexeme(Ident), lexP, parens, prec, readPrec, readListPrec
32 ( Lexeme(Ident), lexP, parens, prec, readPrec, readListPrec
35 , readListPrecDefault)
33 , readListPrecDefault)
37import qualified Streamly.Internal.Data.Stream as Stream
35import qualified Streamly.Internal.Data.Stream as Stream
38−import qualified Streamly.Internal.Data.Stream.StreamD as D
41-- >>> import qualified Streamly.Data.Fold as Fold
38-- >>> import qualified Streamly.Data.Fold as Fold
42-- >>> import qualified Streamly.Data.Stream as Stream
39-- >>> import qualified Streamly.Data.Stream as Stream
43-- >>> import qualified Streamly.Internal.Data.Stream.Zip as Stream
40-- >>> import qualified Streamly.Internal.Data.Stream.Zip as Stream
45−{-# INLINE zipWithMD #-}
46−zipWithMD :: Monad m =>
47− (a -> b -> m c) -> Stream m a -> Stream m b -> Stream m c
49− fromStreamD $ D.zipWithM f (toStreamD m1) (toStreamD m2)
51−{-# INLINE zipWithD #-}
53− => (a -> b -> c) -> Stream m a -> Stream m b -> Stream m c
54−zipWithD f = zipWithMD (\a b -> return (f a b))
56------------------------------------------------------------------------------
42------------------------------------------------------------------------------
57-- Serially Zipping Streams
43-- Serially Zipping Streams
58------------------------------------------------------------------------------
44------------------------------------------------------------------------------
@@ -111,4 +97,4 @@ instance Monad m => Applicative (ZipStream m) where
111 pure = ZipStream . Stream.repeat
97 pure = ZipStream . Stream.repeat
113 {-# INLINE (<*>) #-}
99 {-# INLINE (<*>) #-}
114− ZipStream m1 <*> ZipStream m2 = ZipStream $ zipWithD id m1 m2
100+ ZipStream m1 <*> ZipStream m2 = ZipStream $ Stream.zipWith id m1 m2