on master help sign in
Cleanup hlint warnings
bc39dfeSanchayan Maity
.hlint.ignore−18
@@ -1,30 +1,12 @@
1−src/Streamly/Internal/Data/Stream/SVar.hs
2src/Streamly/Internal/Data/Stream/Serial.hs
1src/Streamly/Internal/Data/Stream/Serial.hs
3src/Streamly/Internal/Data/Stream/Zip.hs
2src/Streamly/Internal/Data/Stream/Zip.hs
4−src/Streamly/Internal/Data/Stream/Parallel.hs
5−src/Streamly/Internal/Data/Stream/Async.hs
6−src/Streamly/Internal/Data/Stream/StreamDK.hs
7−src/Streamly/Internal/Data/Stream/StreamK.hs
8src/Streamly/Internal/Data/Stream/StreamK/Type.hs
3src/Streamly/Internal/Data/Stream/StreamK/Type.hs
9−src/Streamly/Internal/Data/Stream/Ahead.hs
10src/Streamly/Internal/Data/Stream/StreamD/Type.hs
4src/Streamly/Internal/Data/Stream/StreamD/Type.hs
11−src/Streamly/Internal/Data/Stream/StreamDK/Type.hs
12−src/Streamly/Internal/Data/Stream/StreamD.hs
13−src/Streamly/Internal/Data/Stream/StreamD/Generate.hs
14−src/Streamly/Internal/Data/Stream/StreamD/Eliminate.hs
15−src/Streamly/Internal/Data/Stream/StreamD/Transform.hs
16−src/Streamly/Internal/Data/Stream/StreamD/Exception.hs
17−src/Streamly/Internal/Data/Stream/StreamD/Lift.hs
18−src/Streamly/Internal/Data/Stream/StreamD/Nesting.hs
19src/Streamly/Internal/Data/Pipe/Type.hs
5src/Streamly/Internal/Data/Pipe/Type.hs
20src/Streamly/Internal/Data/SmallArray/Type.hs
6src/Streamly/Internal/Data/SmallArray/Type.hs
21src/Streamly/Internal/Unicode/Stream.hs
7src/Streamly/Internal/Unicode/Stream.hs
22−src/Streamly/Internal/Data/IORef/Prim.hs
23src/Streamly/Internal/Data/Array/Prim/Type.hs
8src/Streamly/Internal/Data/Array/Prim/Type.hs
24−src/Streamly/Internal/Data/Array/Prim/Mut/Type.hs
25src/Streamly/Internal/Data/Array/Prim/MutTypesInclude.hs
9src/Streamly/Internal/Data/Array/Prim/MutTypesInclude.hs
26−src/Streamly/Internal/Data/Array/Prim/Pinned/Mut/Type.hs
27−src/Streamly/Internal/Data/Array/Prim/Pinned/Type.hs
28src/Streamly/Internal/Data/Array/Prim/TypesInclude.hs
10src/Streamly/Internal/Data/Array/Prim/TypesInclude.hs
29test/Streamly/Test/Common/Array.hs
11test/Streamly/Test/Common/Array.hs
30test/Streamly/Test/Data/Array.hs
12test/Streamly/Test/Data/Array.hs
src/Streamly/Internal/Data/Stream/Ahead.hs+2−2
@@ -677,7 +677,7 @@ ahead m1 m2 = mkStream $ \st yld sng stp ->
677{-# INLINE consMAhead #-}
677{-# INLINE consMAhead #-}
678{-# SPECIALIZE consMAhead :: IO a -> AheadT IO a -> AheadT IO a #-}
678{-# SPECIALIZE consMAhead :: IO a -> AheadT IO a -> AheadT IO a #-}
679consMAhead :: MonadAsync m => m a -> AheadT m a -> AheadT m a
679consMAhead :: MonadAsync m => m a -> AheadT m a -> AheadT m a
680−consMAhead m r = fromStream $ K.fromEffect m `ahead` (toStream r)
680+consMAhead m r = fromStream $ K.fromEffect m `ahead` toStream r
681
681
682------------------------------------------------------------------------------
682------------------------------------------------------------------------------
683-- AheadT
683-- AheadT
@@ -779,7 +779,7 @@ instance MonadAsync m => Monoid (AheadT m a) where
779{-# SPECIALIZE concatMapAhead :: (a -> AheadT IO b) -> AheadT IO a -> AheadT IO b #-}
779{-# SPECIALIZE concatMapAhead :: (a -> AheadT IO b) -> AheadT IO a -> AheadT IO b #-}
780concatMapAhead :: MonadAsync m => (a -> AheadT m b) -> AheadT m a -> AheadT m b
780concatMapAhead :: MonadAsync m => (a -> AheadT m b) -> AheadT m a -> AheadT m b
781concatMapAhead f m = fromStream $
781concatMapAhead f m = fromStream $
782− K.concatMapBy ahead (\a -> K.adapt $ f a) (K.adapt m)
782+ K.concatMapBy ahead (K.adapt . f) (K.adapt m)
783
783
784{-# INLINE apAhead #-}
784{-# INLINE apAhead #-}
785apAhead :: MonadAsync m => AheadT m (a -> b) -> AheadT m a -> AheadT m b
785apAhead :: MonadAsync m => AheadT m (a -> b) -> AheadT m a -> AheadT m b
src/Streamly/Internal/Data/Stream/Async.hs+6−6
@@ -667,7 +667,7 @@ forkSVarAsync style m1 m2 = mkStream $ \st yld sng stp -> do
667 where
667 where
668 concurrently ma mb = mkStream $ \st yld sng stp -> do
668 concurrently ma mb = mkStream $ \st yld sng stp -> do
669 runInIO <- captureMonadState
669 runInIO <- captureMonadState
670− liftIO $ enqueue (fromJust $ streamVar st) $ (runInIO, mb)
670+ liftIO $ enqueue (fromJust $ streamVar st) (runInIO, mb)
671 foldStreamShared st yld sng stp ma
671 foldStreamShared st yld sng stp ma
672
672
673{-# INLINE joinStreamVarAsync #-}
673{-# INLINE joinStreamVarAsync #-}
@@ -677,7 +677,7 @@ joinStreamVarAsync style m1 m2 = mkStream $ \st yld sng stp ->
677 case streamVar st of
677 case streamVar st of
678 Just sv | svarStyle sv == style -> do
678 Just sv | svarStyle sv == style -> do
679 runInIO <- captureMonadState
679 runInIO <- captureMonadState
680− liftIO $ enqueue sv $ (runInIO, toStream m2)
680+ liftIO $ enqueue sv (runInIO, toStream m2)
681 foldStreamShared st yld sng stp m1
681 foldStreamShared st yld sng stp m1
682 _ -> foldStreamShared st yld sng stp (forkSVarAsync style m1 m2)
682 _ -> foldStreamShared st yld sng stp (forkSVarAsync style m1 m2)
683
683
@@ -769,7 +769,7 @@ async = joinStreamVarAsync AsyncVar
769{-# INLINE consMAsync #-}
769{-# INLINE consMAsync #-}
770{-# SPECIALIZE consMAsync :: IO a -> AsyncT IO a -> AsyncT IO a #-}
770{-# SPECIALIZE consMAsync :: IO a -> AsyncT IO a -> AsyncT IO a #-}
771consMAsync :: MonadAsync m => m a -> AsyncT m a -> AsyncT m a
771consMAsync :: MonadAsync m => m a -> AsyncT m a -> AsyncT m a
772−consMAsync m r = fromStream $ K.fromEffect m `async` (toStream r)
772+consMAsync m r = fromStream $ K.fromEffect m `async` toStream r
773
773
774------------------------------------------------------------------------------
774------------------------------------------------------------------------------
775-- AsyncT
775-- AsyncT
@@ -891,7 +891,7 @@ instance (Monad m, MonadAsync m) => Applicative (AsyncT m) where
891{-# INLINE bindAsync #-}
891{-# INLINE bindAsync #-}
892{-# SPECIALIZE bindAsync :: AsyncT IO a -> (a -> AsyncT IO b) -> AsyncT IO b #-}
892{-# SPECIALIZE bindAsync :: AsyncT IO a -> (a -> AsyncT IO b) -> AsyncT IO b #-}
893bindAsync :: MonadAsync m => AsyncT m a -> (a -> AsyncT m b) -> AsyncT m b
893bindAsync :: MonadAsync m => AsyncT m a -> (a -> AsyncT m b) -> AsyncT m b
894−bindAsync m f = fromStream $ K.bindWith async (adapt m) (\a -> adapt $ f a)
894+bindAsync m f = fromStream $ K.bindWith async (adapt m) (adapt . f)
895
895
896-- GHC: if we specify arguments in the definition of (>>=) we see a significant
896-- GHC: if we specify arguments in the definition of (>>=) we see a significant
897-- performance degradation (~2x).
897-- performance degradation (~2x).
@@ -914,7 +914,7 @@ MONAD_COMMON_INSTANCES(AsyncT, MONADPARALLEL)
914{-# INLINE consMWAsync #-}
914{-# INLINE consMWAsync #-}
915{-# SPECIALIZE consMWAsync :: IO a -> WAsyncT IO a -> WAsyncT IO a #-}
915{-# SPECIALIZE consMWAsync :: IO a -> WAsyncT IO a -> WAsyncT IO a #-}
916consMWAsync :: MonadAsync m => m a -> WAsyncT m a -> WAsyncT m a
916consMWAsync :: MonadAsync m => m a -> WAsyncT m a -> WAsyncT m a
917−consMWAsync m r = fromStream $ K.fromEffect m `wAsync` (toStream r)
917+consMWAsync m r = fromStream $ K.fromEffect m `wAsync` toStream r
918
918
919infixr 6 `wAsync`
919infixr 6 `wAsync`
920
920
@@ -1192,7 +1192,7 @@ instance (Monad m, MonadAsync m) => Applicative (WAsyncT m) where
1192{-# INLINE bindWAsync #-}
1192{-# INLINE bindWAsync #-}
1193{-# SPECIALIZE bindWAsync :: WAsyncT IO a -> (a -> WAsyncT IO b) -> WAsyncT IO b #-}
1193{-# SPECIALIZE bindWAsync :: WAsyncT IO a -> (a -> WAsyncT IO b) -> WAsyncT IO b #-}
1194bindWAsync :: MonadAsync m => WAsyncT m a -> (a -> WAsyncT m b) -> WAsyncT m b
1194bindWAsync :: MonadAsync m => WAsyncT m a -> (a -> WAsyncT m b) -> WAsyncT m b
1195−bindWAsync m f = fromStream $ K.bindWith wAsync (adapt m) (\a -> adapt $ f a)
1195+bindWAsync m f = fromStream $ K.bindWith wAsync (adapt m) (adapt . f)
1196
1196
1197-- GHC: if we specify arguments in the definition of (>>=) we see a significant
1197-- GHC: if we specify arguments in the definition of (>>=) we see a significant
1198-- performance degradation (~2x).
1198-- performance degradation (~2x).
src/Streamly/Internal/Data/Stream/Parallel.hs+4−4
@@ -124,7 +124,7 @@ runOne st m0 winfo =
124 incrementBufferLimit sv
124 incrementBufferLimit sv
125 sendStop sv winfo
125 sendStop sv winfo
126 sendit a = liftIO $ void $ send sv (ChildYield a)
126 sendit a = liftIO $ void $ send sv (ChildYield a)
127− single a = sendit a >> (liftIO $ sendStop sv winfo)
127+ single a = sendit a >> liftIO (sendStop sv winfo)
128 yieldk a r = sendit a >> go r
128 yieldk a r = sendit a >> go r
129
129
130runOneLimited
130runOneLimited
@@ -151,7 +151,7 @@ runOneLimited st m0 winfo = go m0
151 incrementYieldLimit sv
151 incrementYieldLimit sv
152 sendStop sv winfo
152 sendStop sv winfo
153 sendit a = liftIO $ void $ send sv (ChildYield a)
153 sendit a = liftIO $ void $ send sv (ChildYield a)
154− single a = sendit a >> (liftIO $ sendStop sv winfo)
154+ single a = sendit a >> liftIO (sendStop sv winfo)
155 yieldk a r = sendit a >> go r
155 yieldk a r = sendit a >> go r
156
156
157-------------------------------------------------------------------------------
157-------------------------------------------------------------------------------
@@ -234,7 +234,7 @@ joinStreamVarPar style ss m1 m2 = mkStream $ \st yld sng stp ->
234{-# INLINE consMParallel #-}
234{-# INLINE consMParallel #-}
235{-# SPECIALIZE consMParallel :: IO a -> ParallelT IO a -> ParallelT IO a #-}
235{-# SPECIALIZE consMParallel :: IO a -> ParallelT IO a -> ParallelT IO a #-}
236consMParallel :: MonadAsync m => m a -> ParallelT m a -> ParallelT m a
236consMParallel :: MonadAsync m => m a -> ParallelT m a -> ParallelT m a
237−consMParallel m r = fromStream $ K.fromEffect m `parallel` (toStream r)
237+consMParallel m r = fromStream $ K.fromEffect m `parallel` toStream r
238
238
239infixr 6 `parallel`
239infixr 6 `parallel`
240
240
@@ -568,7 +568,7 @@ instance (Monad m, MonadAsync m) => Applicative (ParallelT m) where
568{-# INLINE bindParallel #-}
568{-# INLINE bindParallel #-}
569{-# SPECIALIZE bindParallel :: ParallelT IO a -> (a -> ParallelT IO b) -> ParallelT IO b #-}
569{-# SPECIALIZE bindParallel :: ParallelT IO a -> (a -> ParallelT IO b) -> ParallelT IO b #-}
570bindParallel :: MonadAsync m => ParallelT m a -> (a -> ParallelT m b) -> ParallelT m b
570bindParallel :: MonadAsync m => ParallelT m a -> (a -> ParallelT m b) -> ParallelT m b
571−bindParallel m f = fromStream $ K.bindWith parallel (K.adapt m) (\a -> K.adapt $ f a)
571+bindParallel m f = fromStream $ K.bindWith parallel (K.adapt m) (K.adapt . f)
572
572
573instance MonadAsync m => Monad (ParallelT m) where
573instance MonadAsync m => Monad (ParallelT m) where
574 return = pure
574 return = pure
src/Streamly/Internal/Data/Stream/StreamD/Eliminate.hs+7−7
@@ -243,15 +243,15 @@ drain (Stream step state) = go SPEC state
243
243
244{-# INLINE_NORMAL null #-}
244{-# INLINE_NORMAL null #-}
245null :: Monad m => Stream m a -> m Bool
245null :: Monad m => Stream m a -> m Bool
246−null m = foldrM (\_ _ -> return False) (return True) m
246+null = foldrM (\_ _ -> return False) (return True)
247
247
248{-# INLINE_NORMAL head #-}
248{-# INLINE_NORMAL head #-}
249head :: Monad m => Stream m a -> m (Maybe a)
249head :: Monad m => Stream m a -> m (Maybe a)
250−head m = foldrM (\x _ -> return (Just x)) (return Nothing) m
250+head = foldrM (\x _ -> return (Just x)) (return Nothing)
251
251
252{-# INLINE_NORMAL headElse #-}
252{-# INLINE_NORMAL headElse #-}
253headElse :: Monad m => a -> Stream m a -> m a
253headElse :: Monad m => a -> Stream m a -> m a
254−headElse a m = foldrM (\x _ -> return x) (return a) m
254+headElse a = foldrM (\x _ -> return x) (return a)
255
255
256-- Does not fuse, has the same performance as the StreamK version.
256-- Does not fuse, has the same performance as the StreamK version.
257{-# INLINE_NORMAL tail #-}
257{-# INLINE_NORMAL tail #-}
@@ -407,13 +407,13 @@ minimumBy cmp (Stream step state) = go Nothing state
407
407
408{-# INLINE_NORMAL lookup #-}
408{-# INLINE_NORMAL lookup #-}
409lookup :: (Monad m, Eq a) => a -> Stream m (a, b) -> m (Maybe b)
409lookup :: (Monad m, Eq a) => a -> Stream m (a, b) -> m (Maybe b)
410−lookup e m = foldrM (\(a, b) xs -> if e == a then return (Just b) else xs)
410+lookup e = foldrM (\(a, b) xs -> if e == a then return (Just b) else xs)
411− (return Nothing) m
411+ (return Nothing)
412
412
413{-# INLINE_NORMAL findM #-}
413{-# INLINE_NORMAL findM #-}
414findM :: Monad m => (a -> m Bool) -> Stream m a -> m (Maybe a)
414findM :: Monad m => (a -> m Bool) -> Stream m a -> m (Maybe a)
415−findM p m = foldrM (\x xs -> p x >>= \r -> if r then return (Just x) else xs)
415+findM p = foldrM (\x xs -> p x >>= \r -> if r then return (Just x) else xs)
416− (return Nothing) m
416+ (return Nothing)
417
417
418{-# INLINE find #-}
418{-# INLINE find #-}
419find :: Monad m => (a -> Bool) -> Stream m a -> m (Maybe a)
419find :: Monad m => (a -> Bool) -> Stream m a -> m (Maybe a)
src/Streamly/Internal/Data/Stream/StreamD/Exception.hs+6−6
@@ -239,7 +239,7 @@ onException :: MonadCatch m => m b -> Stream m a -> Stream m a
239onException action str =
239onException action str =
240 gbracket_ (return ()) (inline MC.try) return
240 gbracket_ (return ()) (inline MC.try) return
241 (\_ (e :: MC.SomeException) _ -> nilM (action >> MC.throwM e))
241 (\_ (e :: MC.SomeException) _ -> nilM (action >> MC.throwM e))
242− (\_ -> str)
242+ (const str)
243
243
244{-# INLINE_NORMAL _onException #-}
244{-# INLINE_NORMAL _onException #-}
245_onException :: MonadCatch m => m b -> Stream m a -> Stream m a
245_onException :: MonadCatch m => m b -> Stream m a -> Stream m a
@@ -260,9 +260,9 @@ _onException action (Stream step state) = Stream step' state
260{-# INLINE_NORMAL bracket_ #-}
260{-# INLINE_NORMAL bracket_ #-}
261bracket_ :: MonadCatch m
261bracket_ :: MonadCatch m
262 => m b -> (b -> m c) -> (b -> Stream m a) -> Stream m a
262 => m b -> (b -> m c) -> (b -> Stream m a) -> Stream m a
263−bracket_ bef aft bet =
263+bracket_ bef aft =
264 gbracket_ bef (inline MC.try) aft
264 gbracket_ bef (inline MC.try) aft
265− (\a (e :: SomeException) _ -> nilM (aft a >> MC.throwM e)) bet
265+ (\a (e :: SomeException) _ -> nilM (aft a >> MC.throwM e))
266
266
267-- | See 'Streamly.Internal.Data.Stream.IsStream.bracket'.
267-- | See 'Streamly.Internal.Data.Stream.IsStream.bracket'.
268--
268--
@@ -308,7 +308,7 @@ _bracket bef aft bet = Stream step' BracketInit
308--
308--
309{-# INLINE finally_ #-}
309{-# INLINE finally_ #-}
310finally_ :: MonadCatch m => m b -> Stream m a -> Stream m a
310finally_ :: MonadCatch m => m b -> Stream m a -> Stream m a
311−finally_ action xs = bracket_ (return ()) (\_ -> action) (const xs)
311+finally_ action xs = bracket_ (return ()) (const action) (const xs)
312
312
313-- | See 'Streamly.Internal.Data.Stream.IsStream.finally'.
313-- | See 'Streamly.Internal.Data.Stream.IsStream.finally'.
314--
314--
@@ -325,7 +325,7 @@ finally action xs = bracket' (return ()) act act act (const xs)
325ghandle :: (MonadCatch m, Exception e)
325ghandle :: (MonadCatch m, Exception e)
326 => (e -> Stream m a -> Stream m a) -> Stream m a -> Stream m a
326 => (e -> Stream m a -> Stream m a) -> Stream m a -> Stream m a
327ghandle f str =
327ghandle f str =
328− gbracket_ (return ()) (inline MC.try) return (\_ -> f) (\_ -> str)
328+ gbracket_ (return ()) (inline MC.try) return (const f) (const str)
329
329
330-- | See 'Streamly.Internal.Data.Stream.IsStream.handle'.
330-- | See 'Streamly.Internal.Data.Stream.IsStream.handle'.
331--
331--
@@ -333,7 +333,7 @@ ghandle f str =
333handle :: (MonadCatch m, Exception e)
333handle :: (MonadCatch m, Exception e)
334 => (e -> Stream m a) -> Stream m a -> Stream m a
334 => (e -> Stream m a) -> Stream m a -> Stream m a
335handle f str =
335handle f str =
336− gbracket_ (return ()) (inline MC.try) return (\_ e _ -> f e) (\_ -> str)
336+ gbracket_ (return ()) (inline MC.try) return (\_ e _ -> f e) (const str)
337
337
338-- | Alternate (custom) implementation of 'handle'.
338-- | Alternate (custom) implementation of 'handle'.
339--
339--
src/Streamly/Internal/Data/Stream/StreamD/Generate.hs+1−1
@@ -133,7 +133,7 @@ cons x (Stream step state) = Stream step1 Nothing
133-- Adapted from vector package
133-- Adapted from vector package
134{-# INLINE_NORMAL unfoldrM #-}
134{-# INLINE_NORMAL unfoldrM #-}
135unfoldrM :: Monad m => (s -> m (Maybe (a, s))) -> s -> Stream m a
135unfoldrM :: Monad m => (s -> m (Maybe (a, s))) -> s -> Stream m a
136−unfoldrM next state = Stream step state
136+unfoldrM next = Stream step
137 where
137 where
138 {-# INLINE_LATE step #-}
138 {-# INLINE_LATE step #-}
139 step _ st = do
139 step _ st = do
src/Streamly/Internal/Data/Stream/StreamD/Lift.hs+1−1
@@ -41,7 +41,7 @@ import Streamly.Internal.Data.Stream.StreamD.Type
41
41
42{-# INLINE_NORMAL hoist #-}
42{-# INLINE_NORMAL hoist #-}
43hoist :: Monad n => (forall x. m x -> n x) -> Stream m a -> Stream n a
43hoist :: Monad n => (forall x. m x -> n x) -> Stream m a -> Stream n a
44−hoist f (Stream step state) = (Stream step' state)
44+hoist f (Stream step state) = Stream step' state
45 where
45 where
46 {-# INLINE_LATE step' #-}
46 {-# INLINE_LATE step' #-}
47 step' gst st = do
47 step' gst st = do
src/Streamly/Internal/Data/Stream/StreamD/Nesting.hs+6−6
@@ -2173,7 +2173,7 @@ splitOnSuffixSeq withSep patArr (Fold fstep initial done) (Stream step state) =
2173 r <- if withSep then fstep fs x else fstep fs old
2173 r <- if withSep then fstep fs x else fstep fs old
2174 case r of
2174 case r of
2175 FL.Partial fs1 ->
2175 FL.Partial fs1 ->
2176− if (cksum1 /= patHash)
2176+ if cksum1 /= patHash
2177 then go SPEC fs1 s rh1 cksum1
2177 then go SPEC fs1 s rh1 cksum1
2178 else skip $ SplitOnSuffixSeqKRCheck fs1 s rb rh1
2178 else skip $ SplitOnSuffixSeqKRCheck fs1 s rb rh1
2179 FL.Done b -> do
2179 FL.Done b -> do
@@ -2239,7 +2239,7 @@ splitInnerBy
2239 -> Stream m (f a)
2239 -> Stream m (f a)
2240 -> Stream m (f a)
2240 -> Stream m (f a)
2241splitInnerBy splitter joiner (Stream step1 state1) =
2241splitInnerBy splitter joiner (Stream step1 state1) =
2242− (Stream step (SplitInitial state1))
2242+ Stream step (SplitInitial state1)
2243
2243
2244 where
2244 where
2245
2245
@@ -2253,7 +2253,7 @@ splitInnerBy splitter joiner (Stream step1 state1) =
2253 Nothing -> Skip (SplitBuffering s x1)
2253 Nothing -> Skip (SplitBuffering s x1)
2254 Just x2 -> Skip (SplitYielding x1 (SplitSplitting s x2))
2254 Just x2 -> Skip (SplitYielding x1 (SplitSplitting s x2))
2255 Skip s -> return $ Skip (SplitInitial s)
2255 Skip s -> return $ Skip (SplitInitial s)
2256− Stop -> return $ Stop
2256+ Stop -> return Stop
2257
2257
2258 step gst (SplitBuffering st buf) = do
2258 step gst (SplitBuffering st buf) = do
2259 r <- step1 gst st
2259 r <- step1 gst st
@@ -2274,7 +2274,7 @@ splitInnerBy splitter joiner (Stream step1 state1) =
2274 Just x2 -> Skip $ SplitYielding x1 (SplitSplitting st x2)
2274 Just x2 -> Skip $ SplitYielding x1 (SplitSplitting st x2)
2275
2275
2276 step _ (SplitYielding x next) = return $ Yield x next
2276 step _ (SplitYielding x next) = return $ Yield x next
2277− step _ SplitFinishing = return $ Stop
2277+ step _ SplitFinishing = return Stop
2278
2278
2279-- | Performs infix separator style splitting.
2279-- | Performs infix separator style splitting.
2280{-# INLINE_NORMAL splitInnerBySuffix #-}
2280{-# INLINE_NORMAL splitInnerBySuffix #-}
@@ -2285,7 +2285,7 @@ splitInnerBySuffix
2285 -> Stream m (f a)
2285 -> Stream m (f a)
2286 -> Stream m (f a)
2286 -> Stream m (f a)
2287splitInnerBySuffix splitter joiner (Stream step1 state1) =
2287splitInnerBySuffix splitter joiner (Stream step1 state1) =
2288− (Stream step (SplitInitial state1))
2288+ Stream step (SplitInitial state1)
2289
2289
2290 where
2290 where
2291
2291
@@ -2299,7 +2299,7 @@ splitInnerBySuffix splitter joiner (Stream step1 state1) =
2299 Nothing -> Skip (SplitBuffering s x1)
2299 Nothing -> Skip (SplitBuffering s x1)
2300 Just x2 -> Skip (SplitYielding x1 (SplitSplitting s x2))
2300 Just x2 -> Skip (SplitYielding x1 (SplitSplitting s x2))
2301 Skip s -> return $ Skip (SplitInitial s)
2301 Skip s -> return $ Skip (SplitInitial s)
2302− Stop -> return $ Stop
2302+ Stop -> return Stop
2303
2303
2304 step gst (SplitBuffering st buf) = do
2304 step gst (SplitBuffering st buf) = do
2305 r <- step1 gst st
2305 r <- step1 gst st
src/Streamly/Internal/Data/Stream/StreamD/Transform.hs+8−8
@@ -535,8 +535,8 @@ postscanlMx' fstep begin done (Stream step state) = do
535{-# INLINE_NORMAL postscanlx' #-}
535{-# INLINE_NORMAL postscanlx' #-}
536postscanlx' :: Monad m
536postscanlx' :: Monad m
537 => (x -> a -> x) -> x -> (x -> b) -> Stream m a -> Stream m b
537 => (x -> a -> x) -> x -> (x -> b) -> Stream m a -> Stream m b
538−postscanlx' fstep begin done s =
538+postscanlx' fstep begin done =
539− postscanlMx' (\b a -> return (fstep b a)) (return begin) (return . done) s
539+ postscanlMx' (\b a -> return (fstep b a)) (return begin) (return . done)
540
540
541-- XXX do we need consM strict to evaluate the begin value?
541-- XXX do we need consM strict to evaluate the begin value?
542{-# INLINE scanlMx' #-}
542{-# INLINE scanlMx' #-}
@@ -548,8 +548,8 @@ scanlMx' fstep begin done s =
548{-# INLINE scanlx' #-}
548{-# INLINE scanlx' #-}
549scanlx' :: Monad m
549scanlx' :: Monad m
550 => (x -> a -> x) -> x -> (x -> b) -> Stream m a -> Stream m b
550 => (x -> a -> x) -> x -> (x -> b) -> Stream m a -> Stream m b
551−scanlx' fstep begin done s =
551+scanlx' fstep begin done =
552− scanlMx' (\b a -> return (fstep b a)) (return begin) (return . done) s
552+ scanlMx' (\b a -> return (fstep b a)) (return begin) (return . done)
553
553
554------------------------------------------------------------------------------
554------------------------------------------------------------------------------
555-- postscans
555-- postscans
@@ -669,7 +669,7 @@ scanlM fstep begin (Stream step state) = Stream step' Nothing
669 y <- fstep acc x
669 y <- fstep acc x
670 return $ Yield y (Just (s, y))
670 return $ Yield y (Just (s, y))
671 Skip s -> return $ Skip (Just (s, acc))
671 Skip s -> return $ Skip (Just (s, acc))
672− Stop -> return $ Stop
672+ Stop -> return Stop
673
673
674{-# INLINE scanl #-}
674{-# INLINE scanl #-}
675scanl :: Monad m => (b -> a -> b) -> b -> Stream m a -> Stream m b
675scanl :: Monad m => (b -> a -> b) -> b -> Stream m a -> Stream m b
@@ -1068,12 +1068,12 @@ intersperseSuffixBySpan n action (Stream step state) =
1068 step' _ (SuffixSpanSuffix st) = do
1068 step' _ (SuffixSpanSuffix st) = do
1069 action >>= \r -> return $ Skip (SuffixSpanYield r (SuffixSpanElem st n))
1069 action >>= \r -> return $ Skip (SuffixSpanYield r (SuffixSpanElem st n))
1070
1070
1071− step' _ (SuffixSpanLast) = do
1071+ step' _ SuffixSpanLast = do
1072 action >>= \r -> return $ Skip (SuffixSpanYield r SuffixSpanStop)
1072 action >>= \r -> return $ Skip (SuffixSpanYield r SuffixSpanStop)
1073
1073
1074 step' _ (SuffixSpanYield x next) = return $ Yield x next
1074 step' _ (SuffixSpanYield x next) = return $ Yield x next
1075
1075
1076− step' _ (SuffixSpanStop) = return Stop
1076+ step' _ SuffixSpanStop = return Stop
1077
1077
1078------------------------------------------------------------------------------
1078------------------------------------------------------------------------------
1079-- Reordering
1079-- Reordering
@@ -1208,7 +1208,7 @@ rollingMapM f (Stream step1 state1) = Stream step (RollingMapInit state1)
1208 !res <- f x x1
1208 !res <- f x x1
1209 return $ Yield res $ RollingMapGo s x
1209 return $ Yield res $ RollingMapGo s x
1210 Skip s -> return $ Skip $ RollingMapGo s x1
1210 Skip s -> return $ Skip $ RollingMapGo s x1
1211− Stop -> return $ Stop
1211+ Stop -> return Stop
1212
1212
1213{-# INLINE rollingMap #-}
1213{-# INLINE rollingMap #-}
1214rollingMap :: Monad m => (a -> a -> b) -> Stream m a -> Stream m b
1214rollingMap :: Monad m => (a -> a -> b) -> Stream m a -> Stream m b
src/Streamly/Internal/Data/Stream/StreamDK.hs+1−1
@@ -112,7 +112,7 @@ foldrS f streamb = go
112
112
113{-# INLINE_LATE foldrM #-}
113{-# INLINE_LATE foldrM #-}
114foldrM :: Monad m => (a -> m b -> m b) -> m b -> Stream m a -> m b
114foldrM :: Monad m => (a -> m b -> m b) -> m b -> Stream m a -> m b
115−foldrM fstep acc ys = go ys
115+foldrM fstep acc = go
116 where
116 where
117 go (Stream step) = do
117 go (Stream step) = do
118 r <- step
118 r <- step
src/Streamly/Internal/Data/Stream/StreamDK/Type.hs+1−1
@@ -101,4 +101,4 @@ where
101-- XXX Use Cons and Nil instead of Yield and Stop?
101-- XXX Use Cons and Nil instead of Yield and Stop?
102data Step m a = Yield a (Stream m a) | Stop
102data Step m a = Yield a (Stream m a) | Stop
103
103
104−data Stream m a = Stream (m (Step m a))
104+newtype Stream m a = Stream (m (Step m a))
src/Streamly/Internal/Data/Stream/StreamK.hs+28−30
@@ -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
316 where
316 where
317− go n = (gen n) `cons` go (n + 1)
317+ go n = gen n `cons` go (n + 1)
318
318
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
371 where
371 where
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
398 where
398 where
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
435 where
435 where
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
448 where
448 where
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 ->
588
588
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
592 where
592 where
593 go1 m1 = do
593 go1 m1 = do
594 r <- uncons m1
594 r <- uncons m1
@@ -602,7 +602,7 @@ init m = go1 m
602
602
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
606 where
606 where
607 go m1 =
607 go m1 =
608 let stop = return False
608 let stop = return False
@@ -612,7 +612,7 @@ elem e m = go m
612
612
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
616 where
616 where
617 go m1 =
617 go m1 =
618 let stop = return True
618 let stop = return True
@@ -622,7 +622,7 @@ notElem e m = go m
622
622
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
626 where
626 where
627 go m1 =
627 go m1 =
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
633
633
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
637 where
637 where
638 go m1 =
638 go m1 =
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
649
649
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
653 where
653 where
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
673minimumBy
673minimumBy
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
677 where
677 where
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
693
693
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
697 where
697 where
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
715
715
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
719 where
719 where
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
747
747
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
751 where
751 where
752 go m1 =
752 go m1 =
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
758
758
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
762 where
762 where
763 go m1 =
763 go m1 =
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
797 where
797 where
798 go m1 =
798 go m1 =
799 let stop = return ()
799 let stop = return ()
@@ -851,7 +851,7 @@ scanl' step begin = scanlx' step begin id
851
851
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
855 where
855 where
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
862
862
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
866 where
866 where
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
872
872
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
876 where
876 where
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))
895
895
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
899 where
899 where
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
916 where
916 where
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
925
925
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
929 where
929 where
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)
941
941
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
945 where
945 where
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
959
959
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
963 where
963 where
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
982
982
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
986 where
986 where
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)
989− Just b -> sng b
990− Nothing -> stp
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
1022 where
1020 where
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 =
src/Streamly/Internal/Data/Stream/StreamK/Type.hs+14−14
@@ -269,7 +269,7 @@ type StopK m = forall r. m r -> m r
269type YieldK m a = forall r. (a -> m r) -> m r
269type YieldK m a = forall r. (a -> m r) -> m r
270
270
271_wrapM :: Monad m => m a -> YieldK m a
271_wrapM :: Monad m => m a -> YieldK m a
272−_wrapM m = \k -> m >>= k
272+_wrapM m = (m >>=)
273
273
274-- | Make an empty stream from a stop function.
274-- | Make an empty stream from a stop function.
275fromStopK :: IsStream t => StopK m -> t m a
275fromStopK :: IsStream t => StopK m -> t m a
@@ -282,7 +282,7 @@ fromYieldK k = mkStream $ \_ _ sng _ -> k sng
282
282
283-- | Add a yield function at the head of the stream.
283-- | Add a yield function at the head of the stream.
284consK :: IsStream t => YieldK m a -> t m a -> t m a
284consK :: IsStream t => YieldK m a -> t m a -> t m a
285−consK k r = mkStream $ \_ yld _ _ -> k (\x -> yld x r)
285+consK k r = mkStream $ \_ yld _ _ -> k (`yld` r)
286
286
287-- XXX Build a stream from a repeating callback function.
287-- XXX Build a stream from a repeating callback function.
288
288
@@ -359,7 +359,7 @@ fromEffect m = fromStream $ mkStream $ \_ _ single _ -> m >>= single
359{-# INLINE consMBy #-}
359{-# INLINE consMBy #-}
360consMBy :: (IsStream t, MonadAsync m) => (t m a -> t m a -> t m a)
360consMBy :: (IsStream t, MonadAsync m) => (t m a -> t m a -> t m a)
361 -> m a -> t m a -> t m a
361 -> m a -> t m a -> t m a
362−consMBy f m r = (fromStream $ fromEffect m) `f` r
362+consMBy f m r = fromStream (fromEffect m) `f` r
363
363
364------------------------------------------------------------------------------
364------------------------------------------------------------------------------
365-- Folding a stream
365-- Folding a stream
@@ -462,7 +462,7 @@ foldrSWith :: IsStream t
462 -> t m b
462 -> t m b
463 -> m r)
463 -> m r)
464 -> (a -> t m b -> t m b) -> t m b -> t m a -> t m b
464 -> (a -> t m b -> t m b) -> t m b -> t m a -> t m b
465−foldrSWith f step final m = go m
465+foldrSWith f step final = go
466 where
466 where
467 go m1 = mkStream $ \st yld sng stp ->
467 go m1 = mkStream $ \st yld sng stp ->
468 let run x = f st yld sng stp x
468 let run x = f st yld sng stp x
@@ -520,7 +520,7 @@ foldrSMWith :: (IsStream t, Monad m)
520 -> t m b
520 -> t m b
521 -> m r)
521 -> m r)
522 -> (m a -> t m b -> t m b) -> t m b -> t m a -> t m b
522 -> (m a -> t m b -> t m b) -> t m b -> t m a -> t m b
523−foldrSMWith f step final m = go m
523+foldrSMWith f step final = go
524 where
524 where
525 go m1 = mkStream $ \st yld sng stp ->
525 go m1 = mkStream $ \st yld sng stp ->
526 let run x = f st yld sng stp x
526 let run x = f st yld sng stp x
@@ -658,7 +658,7 @@ sharedM g = mkStream $ \st yld sng stp ->
658{-# INLINE_NORMAL augmentS #-}
658{-# INLINE_NORMAL augmentS #-}
659augmentS :: IsStream t
659augmentS :: IsStream t
660 => ((a -> t m a -> t m a) -> t m a -> t m a) -> t m a -> t m a
660 => ((a -> t m a -> t m a) -> t m a -> t m a) -> t m a -> t m a
661−augmentS g xs = g cons xs
661+augmentS g = g cons
662
662
663{-# RULES "augmentS/nil"
663{-# RULES "augmentS/nil"
664 forall (g :: (a -> t m a -> t m a) -> t m a -> t m a).
664 forall (g :: (a -> t m a -> t m a) -> t m a -> t m a).
@@ -679,7 +679,7 @@ augmentS g xs = g cons xs
679{-# INLINE_NORMAL augmentSM #-}
679{-# INLINE_NORMAL augmentSM #-}
680augmentSM :: (IsStream t, MonadAsync m)
680augmentSM :: (IsStream t, MonadAsync m)
681 => ((m a -> t m a -> t m a) -> t m a -> t m a) -> t m a -> t m a
681 => ((m a -> t m a -> t m a) -> t m a -> t m a) -> t m a -> t m a
682−augmentSM g xs = g consM xs
682+augmentSM g = g consM
683
683
684{-# RULES "augmentSM/nil"
684{-# RULES "augmentSM/nil"
685 forall (g :: (m a -> t m a -> t m a) -> t m a -> t m a).
685 forall (g :: (m a -> t m a -> t m a) -> t m a -> t m a).
@@ -704,7 +704,7 @@ augmentSM g xs = g consM xs
704-- | Lazy right fold with a monadic step function.
704-- | Lazy right fold with a monadic step function.
705{-# INLINE_NORMAL foldrM #-}
705{-# INLINE_NORMAL foldrM #-}
706foldrM :: IsStream t => (a -> m b -> m b) -> m b -> t m a -> m b
706foldrM :: IsStream t => (a -> m b -> m b) -> m b -> t m a -> m b
707−foldrM step acc m = go m
707+foldrM step acc = go
708 where
708 where
709 go m1 =
709 go m1 =
710 let stop = acc
710 let stop = acc
@@ -724,7 +724,7 @@ foldrMKWith
724 -> m b
724 -> m b
725 -> ((a -> t m a -> m b) -> (a -> m b) -> m b -> m b)
725 -> ((a -> t m a -> m b) -> (a -> m b) -> m b -> m b)
726 -> m b
726 -> m b
727−foldrMKWith f step acc g = go g
727+foldrMKWith f step acc = go
728 where
728 where
729 go k =
729 go k =
730 let stop = acc
730 let stop = acc
@@ -837,7 +837,7 @@ serial m1 m2 = go m1
837-- join/merge/append streams depending on consM
837-- join/merge/append streams depending on consM
838{-# INLINE conjoin #-}
838{-# INLINE conjoin #-}
839conjoin :: (IsStream t, MonadAsync m) => t m a -> t m a -> t m a
839conjoin :: (IsStream t, MonadAsync m) => t m a -> t m a -> t m a
840−conjoin xs ys = augmentSM (\c n -> foldrSM c n xs) ys
840+conjoin xs = augmentSM (\c n -> foldrSM c n xs)
841
841
842instance Semigroup (Stream m a) where
842instance Semigroup (Stream m a) where
843 (<>) = serial
843 (<>) = serial
@@ -858,7 +858,7 @@ instance Monoid (Stream m a) where
858{-# INLINE_LATE mapFB #-}
858{-# INLINE_LATE mapFB #-}
859mapFB :: forall (t :: (Type -> Type) -> Type -> Type) b m a.
859mapFB :: forall (t :: (Type -> Type) -> Type -> Type) b m a.
860 (b -> t m b -> t m b) -> (a -> b) -> a -> t m b -> t m b
860 (b -> t m b -> t m b) -> (a -> b) -> a -> t m b -> t m b
861−mapFB c f = \x ys -> c (f x) ys
861+mapFB c f x ys = c (f x) ys
862#undef Type
862#undef Type
863
863
864{-# RULES
864{-# RULES
@@ -886,7 +886,7 @@ map f m = go m
886
886
887{-# INLINE_LATE mapMFB #-}
887{-# INLINE_LATE mapMFB #-}
888mapMFB :: Monad m => (m b -> t m b -> t m b) -> (a -> m b) -> m a -> t m b -> t m b
888mapMFB :: Monad m => (m b -> t m b -> t m b) -> (a -> m b) -> m a -> t m b -> t m b
889−mapMFB c f = \x ys -> c (x >>= f) ys
889+mapMFB c f x = c (x >>= f)
890
890
891{-# RULES
891{-# RULES
892 "mapMFB/mapMFB" forall c f g. mapMFB (mapMFB c f) g = mapMFB c (f >=> g)
892 "mapMFB/mapMFB" forall c f g. mapMFB (mapMFB c f) g = mapMFB c (f >=> g)
@@ -1016,7 +1016,7 @@ apSerialDiscardFst fstream stream = go1 fstream
1016 go1 m =
1016 go1 m =
1017 mkStream $ \st yld sng stp ->
1017 mkStream $ \st yld sng stp ->
1018 let foldShared = foldStreamShared st yld sng stp
1018 let foldShared = foldStreamShared st yld sng stp
1019− single _ = foldShared $ stream
1019+ single _ = foldShared stream
1020 yieldk _ r = foldShared $ go2 r stream
1020 yieldk _ r = foldShared $ go2 r stream
1021 in foldStream (adaptState st) yieldk single stp m
1021 in foldStream (adaptState st) yieldk single stp m
1022
1022
@@ -1107,7 +1107,7 @@ concatMapBy par f xs = bindWith par xs f
1107concatMap :: IsStream t => (a -> t m b) -> t m a -> t m b
1107concatMap :: IsStream t => (a -> t m b) -> t m a -> t m b
1108concatMap f m = fromStream $
1108concatMap f m = fromStream $
1109 concatMapBy serial
1109 concatMapBy serial
1110− (\a -> adapt $ toStream $ f a)
1110+ (adapt . toStream . f)
1111 (adapt $ toStream m)
1111 (adapt $ toStream m)
1112
1112
1113{-
1113{-