on master help sign in
Remove duplicate combinators in internal Stream.Zip
0aacf72Adithya Kumar
core/src/Streamly/Internal/Data/Stream/Zip.hs+2−16
@@ -21,38 +21,24 @@ module Streamly.Internal.Data.Stream.Zip
21 ZipStream (..)
21 ZipStream (..)
22 , ZipSerialM
22 , ZipSerialM
23 , ZipSerial
23 , ZipSerial
24− , zipWithD
25− , zipWithMD
26 )
24 )
27where
25where
28
26
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)
36
34
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
39
36
40-- $setup
37-- $setup
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
44
41
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−
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
112
98
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