@@ -21,38 +21,24 @@ module Streamly.Internal.Data.Stream.Zip
2121 ZipStream (..)
2222 , ZipSerialM
2323 , ZipSerial
24− , zipWithD
25− , zipWithMD
2624 )
2725where
2826
2927import Control.DeepSeq (NFData(..), NFData1(..))
3028import Data.Functor.Identity (Identity(..))
3129import GHC.Exts (IsList(..), IsString(..))
32−import Streamly.Internal.Data.Stream.Type (Stream, toStreamD, fromStreamD)
30+import Streamly.Internal.Data.Stream.Type (Stream)
3331import Text.Read
3432 ( Lexeme(Ident), lexP, parens, prec, readPrec, readListPrec
3533 , readListPrecDefault)
3634
3735import qualified Streamly.Internal.Data.Stream as Stream
38−import qualified Streamly.Internal.Data.Stream.StreamD as D
3936
4037-- $setup
4138-- >>> import qualified Streamly.Data.Fold as Fold
4239-- >>> import qualified Streamly.Data.Stream as Stream
4340-- >>> import qualified Streamly.Internal.Data.Stream.Zip as Stream
4441
45−{-# INLINE zipWithMD #-}
46−zipWithMD :: Monad m =>
47− (a -> b -> m c) -> Stream m a -> Stream m b -> Stream m c
48−zipWithMD f m1 m2 =
49− fromStreamD $ D.zipWithM f (toStreamD m1) (toStreamD m2)
50−
51−{-# INLINE zipWithD #-}
52−zipWithD :: Monad m
53− => (a -> b -> c) -> Stream m a -> Stream m b -> Stream m c
54−zipWithD f = zipWithMD (\a b -> return (f a b))
55−
5642------------------------------------------------------------------------------
5743-- Serially Zipping Streams
5844------------------------------------------------------------------------------
@@ -111,4 +97,4 @@ instance Monad m => Applicative (ZipStream m) where
11197 pure = ZipStream . Stream.repeat
11298
11399 {-# INLINE (<*>) #-}
114− ZipStream m1 <*> ZipStream m2 = ZipStream $ zipWithD id m1 m2
100+ ZipStream m1 <*> ZipStream m2 = ZipStream $ Stream.zipWith id m1 m2