@@ -167,15 +167,15 @@ instance (Monad m, Functor f, Eq1 m, Eq1 f) => Eq1 (Stream f m) where
167167 where
168168 liftEqExposed (Return x) (Return y) = eq x y
169169 liftEqExposed (Effect m) (Effect n) = liftEq liftEqExposed m n
170- liftEqExposed (Step f) (Step g) = liftEq liftEqExposed f g
170+ liftEqExposed (Step f) (Step g) = liftEq liftEqExposed f g
171171 liftEqExposed _ _ = False
172172
173173instance (Monad m , Functor f , Ord1 m , Ord1 f ) => Ord1 (Stream f m ) where
174174 liftCompare cmp xs ys = liftCmpExposed (unexposed xs) (unexposed ys)
175175 where
176176 liftCmpExposed (Return x) (Return y) = cmp x y
177177 liftCmpExposed (Effect m) (Effect n) = liftCompare liftCmpExposed m n
178- liftCmpExposed (Step f) (Step g) = liftCompare liftCmpExposed f g
178+ liftCmpExposed (Step f) (Step g) = liftCompare liftCmpExposed f g
179179 liftCmpExposed (Return _) _ = LT
180180 liftCmpExposed _ (Return _) = GT
181181 liftCmpExposed _ _ = error " liftCmpExposed: stream was exposed!"
@@ -200,7 +200,7 @@ instance (Monad m, Show r, Show (m ShowSWrapper), Show (f (Stream f m r)))
200200 flip fmap (inspect xs) $ \ front ->
201201 SS $ \ d -> showParen (d > 10 ) $
202202 case front of
203- Left r -> showString " Return " . showsPrec 11 r
203+ Left r -> showString " Return " . showsPrec 11 r
204204 Right f -> showString " Step " . showsPrec 11 f)
205205
206206#if MIN_VERSION_base(4,9,0)
@@ -212,7 +212,7 @@ instance (Monad m, Functor f, Show (m ShowSWrapper), Show (f ShowSWrapper))
212212 flip fmap (inspect xs) $ \ front ->
213213 SS $ \ d -> showParen (d > 10 ) $
214214 case front of
215- Left r -> showString " Return " . sp 11 r
215+ Left r -> showString " Return " . sp 11 r
216216 Right f -> showString " Step " .
217217 showsPrec 11 (fmap (SS . (\ str i -> liftShowsPrec sp sl i str)) f))
218218
@@ -226,18 +226,18 @@ instance (Functor f, Monad m) => Functor (Stream f m) where
226226 fmap f = loop where
227227 loop stream = case stream of
228228 Return r -> Return (f r)
229- Effect m -> Effect (do {stream' <- m; return (loop stream')})
230- Step g -> Step (fmap loop g)
229+ Effect m -> Effect (do {stream' <- m; return (loop stream')})
230+ Step g -> Step (fmap loop g)
231231 {-# INLINABLE fmap #-}
232232 a <$ stream0 = loop stream0 where
233233 loop stream = case stream of
234234 Return _ -> Return a
235235 Effect m -> Effect (do {stream' <- m; return (loop stream')})
236- Step f -> Step (fmap loop f)
236+ Step f -> Step (fmap loop f)
237237 {-# INLINABLE (<$) #-}
238238
239239instance (Functor f , Monad m ) => Monad (Stream f m ) where
240- return = Return
240+ return = pure
241241 {-# INLINE return #-}
242242 (>>) = (*>)
243243 {-# INLINE (>>) #-}
@@ -248,7 +248,7 @@ instance (Functor f, Monad m) => Monad (Stream f m) where
248248 loop stream where
249249 loop stream0 = case stream0 of
250250 Step fstr -> Step (fmap loop fstr)
251- Effect m -> Effect (fmap loop m)
251+ Effect m -> Effect (fmap loop m)
252252 Return r -> f r
253253 {-# INLINABLE (>>=) #-}
254254
@@ -288,7 +288,7 @@ instance (Functor f, Monad m) => Applicative (Stream f m) where
288288 stream1 *> stream2 = loop stream1 where
289289 loop stream = case stream of
290290 Return _ -> stream2
291- Effect m -> Effect (fmap loop m)
291+ Effect m -> Effect (fmap loop m)
292292 Step f -> Step (fmap loop f)
293293 {-# INLINABLE (*>) #-}
294294
@@ -330,17 +330,17 @@ instance Functor f => MonadTrans (Stream f) where
330330instance Functor f => MFunctor (Stream f ) where
331331 hoist trans = loop where
332332 loop stream = case stream of
333- Return r -> Return r
334- Effect m -> Effect (trans (fmap loop m))
335- Step f -> Step (fmap loop f)
333+ Return r -> Return r
334+ Effect m -> Effect (trans (fmap loop m))
335+ Step f -> Step (fmap loop f)
336336 {-# INLINABLE hoist #-}
337337
338338
339339instance Functor f => MMonad (Stream f ) where
340340 embed phi = loop where
341341 loop stream = case stream of
342342 Return r -> Return r
343- Effect m -> phi m >>= loop
343+ Effect m -> phi m >>= loop
344344 Step f -> Step (fmap loop f)
345345 {-# INLINABLE embed #-}
346346
@@ -371,7 +371,7 @@ instance (Functor f, MonadError e m) => MonadError e (Stream f m) where
371371 loop x = case x of
372372 Return r -> Return r
373373 Effect m -> Effect $ fmap loop m `catchError` (return . f)
374- Step g -> Step (fmap loop g)
374+ Step g -> Step (fmap loop g)
375375 {-# INLINABLE catchError #-}
376376
377377{-| Map a stream to its church encoding; compare @Data.List.foldr@.
@@ -390,7 +390,7 @@ destroy stream0 construct theEffect done = theEffect (loop stream0) where
390390 loop stream = case stream of
391391 Return r -> return (done r)
392392 Effect m -> m >>= loop
393- Step fs -> return (construct (fmap (theEffect . loop) fs))
393+ Step fs -> return (construct (fmap (theEffect . loop) fs))
394394{-# INLINABLE destroy #-}
395395
396396
@@ -433,7 +433,7 @@ streamFold done theEffect construct stream = destroy stream construct theEffect
433433
434434{- | Reflect a church-encoded stream; cp. @GHC.Exts.build@
435435
436- > streamFold return_ effect_ step_ (streamBuild psi) = psi return_ effect_ step_
436+ > streamFold return_ effect_ step_ (streamBuild psi) = psi return_ effect_ step_
437437-}
438438streamBuild
439439 :: (forall b . (r -> b ) -> (m b -> b ) -> (f b -> b ) -> b ) -> Stream f m r
@@ -453,7 +453,7 @@ inspect :: Monad m =>
453453inspect = loop where
454454 loop stream = case stream of
455455 Return r -> return (Left r)
456- Effect m -> m >>= loop
456+ Effect m -> m >>= loop
457457 Step fs -> return (Right fs)
458458{-# INLINABLE inspect #-}
459459
@@ -471,9 +471,9 @@ unfold :: (Monad m, Functor f)
471471unfold step = loop where
472472 loop s0 = Effect $ do
473473 e <- step s0
474- case e of
475- Left r -> return ( Return r)
476- Right fs -> return ( Step (fmap loop fs) )
474+ return $ case e of
475+ Left r -> Return r
476+ Right fs -> Step (fmap loop fs)
477477{-# INLINABLE unfold #-}
478478
479479
@@ -488,9 +488,9 @@ maps :: (Monad m, Functor f)
488488 => (forall x . f x -> g x ) -> Stream f m r -> Stream g m r
489489maps phi = loop where
490490 loop stream = case stream of
491- Return r -> Return r
492- Effect m -> Effect (fmap loop m)
493- Step f -> Step (phi (fmap loop f))
491+ Return r -> Return r
492+ Effect m -> Effect (fmap loop m)
493+ Step f -> Step (phi (fmap loop f))
494494{-# INLINABLE maps #-}
495495
496496
@@ -507,9 +507,9 @@ maps phi = loop where
507507mapsM :: (Monad m , Functor f ) => (forall x . f x -> m (g x )) -> Stream f m r -> Stream g m r
508508mapsM phi = loop where
509509 loop stream = case stream of
510- Return r -> Return r
511- Effect m -> Effect (fmap loop m)
512- Step f -> Effect (fmap Step (phi (fmap loop f)))
510+ Return r -> Return r
511+ Effect m -> Effect (fmap loop m)
512+ Step f -> Effect (fmap Step (phi (fmap loop f)))
513513{-# INLINABLE mapsM #-}
514514
515515{- | Map layers of one functor to another with a transformation. Compare
@@ -519,7 +519,6 @@ mapsM phi = loop where
519519> mapsPost f . mapsPost g = mapsPost (f . g)
520520> mapsPost f = mapsPost f
521521
522-
523522 @mapsPost@ is essentially the same as 'maps', but it imposes a 'Functor' constraint on
524523 its target functor rather than its source functor. It should be preferred if 'fmap'
525524 is cheaper for the target functor than for the source functor.
@@ -532,7 +531,7 @@ mapsPost phi = loop where
532531 loop stream = case stream of
533532 Return r -> Return r
534533 Effect m -> Effect (fmap loop m)
535- Step f -> Step $ fmap loop $ phi f
534+ Step f -> Step $ fmap loop $ phi f
536535{-# INLINABLE mapsPost #-}
537536
538537{- | Map layers of one functor to another with a transformation involving the base monad.
@@ -557,7 +556,7 @@ mapsMPost phi = loop where
557556 loop stream = case stream of
558557 Return r -> Return r
559558 Effect m -> Effect (fmap loop m)
560- Step f -> Effect $ fmap (Step . fmap loop) (phi f)
559+ Step f -> Effect $ fmap (Step . fmap loop) (phi f)
561560{-# INLINABLE mapsMPost #-}
562561
563562{-| Rearrange a succession of layers of the form @Compose m (f x)@.
@@ -581,7 +580,7 @@ decompose :: (Monad m, Functor f) => Stream (Compose m f) m r -> Stream f m r
581580decompose = loop where
582581 loop stream = case stream of
583582 Return r -> Return r
584- Effect m -> Effect (fmap loop m)
583+ Effect m -> Effect (fmap loop m)
585584 Step (Compose mstr) -> Effect $ do
586585 str <- mstr
587586 return (Step (fmap loop str))
@@ -592,8 +591,8 @@ decompose = loop where
592591run :: Monad m => Stream m m r -> m r
593592run = loop where
594593 loop stream = case stream of
595- Return r -> return r
596- Effect m -> m >>= loop
594+ Return r -> return r
595+ Effect m -> m >>= loop
597596 Step mrest -> mrest >>= loop
598597{-# INLINABLE run #-}
599598
@@ -614,16 +613,16 @@ intercalates :: (Monad m, Monad (t m), MonadTrans t) =>
614613intercalates sep = go0
615614 where
616615 go0 f = case f of
617- Return r -> return r
618- Effect m -> lift m >>= go0
616+ Return r -> return r
617+ Effect m -> lift m >>= go0
619618 Step fstr -> do
620619 f' <- fstr
621620 go1 f'
622621 go1 f = case f of
623- Return r -> return r
624- Effect m -> lift m >>= go1
622+ Return r -> return r
623+ Effect m -> lift m >>= go1
625624 Step fstr -> do
626- _ <- sep
625+ _ <- sep
627626 f' <- fstr
628627 go1 f'
629628{-# INLINABLE intercalates #-}
@@ -657,7 +656,7 @@ concats :: (Monad m, Functor f) => Stream (Stream f m) m r -> Stream f m r
657656concats = loop where
658657 loop stream = case stream of
659658 Return r -> return r
660- Effect m -> lift m >>= loop
659+ Effect m -> lift m >>= loop
661660 Step fs -> fs >>= loop
662661{-# INLINE concats #-}
663662
@@ -687,11 +686,11 @@ concats = loop where
687686splitsAt :: (Monad m , Functor f ) => Int -> Stream f m r -> Stream f m (Stream f m r )
688687splitsAt = loop where
689688 loop ! n stream
690- | n <= 0 = Return stream
689+ | n <= 0 = Return stream
691690 | otherwise = case stream of
692- Return r -> Return (Return r)
693- Effect m -> Effect (fmap (loop n) m)
694- Step fs -> case n of
691+ Return r -> Return (Return r)
692+ Effect m -> Effect (fmap (loop n) m)
693+ Step fs -> case n of
695694 0 -> Return (Step fs)
696695 _ -> Step (fmap (loop (n- 1 )) fs)
697696{-# INLINABLE splitsAt #-}
@@ -755,14 +754,14 @@ distribute = loop where
755754-- | Repeat a functorial layer (a \"command\" or \"instruction\") forever.
756755repeats :: (Monad m , Functor f ) => f () -> Stream f m r
757756repeats f = loop where
758- loop = Effect (return (Step (fmap ( \ _ -> loop) f)))
757+ loop = Effect (return (Step (loop <$ f)))
759758
760759-- | Repeat an effect containing a functorial layer, command or instruction forever.
761760repeatsM :: (Monad m , Functor f ) => m (f () ) -> Stream f m r
762761repeatsM mf = loop where
763762 loop = Effect $ do
764763 f <- mf
765- return $ Step $ fmap ( \ _ -> loop) f
764+ return $ Step $ loop <$ f
766765
767766{- | Repeat a functorial layer, command or instruction a fixed number of times.
768767
@@ -796,7 +795,7 @@ hoistUnexposed trans = loop where
796795inspectC :: Monad m => (r -> m a ) -> (f (Stream f m r ) -> m a ) -> Stream f m r -> m a
797796inspectC f g = loop where
798797 loop (Return r) = f r
799- loop (Step x) = g x
798+ loop (Step x) = g x
800799 loop (Effect m) = m >>= loop
801800{-# INLINE inspectC #-}
802801
@@ -806,9 +805,9 @@ inspectC f g = loop where
806805hoistExposed :: (Functor m , Functor f ) => (forall b . m b -> n b ) -> Stream f m a -> Stream f n a
807806hoistExposed trans = loop where
808807 loop stream = case stream of
809- Return r -> Return r
810- Effect m -> Effect (trans (fmap loop m))
811- Step f -> Step (fmap loop f)
808+ Return r -> Return r
809+ Effect m -> Effect (trans (fmap loop m))
810+ Step f -> Step (fmap loop f)
812811{-# INLINABLE hoistExposed #-}
813812
814813-- | The same as 'hoistExposed', but with a 'Functor' constraint on
@@ -819,7 +818,7 @@ hoistExposedPost trans = loop where
819818 loop stream = case stream of
820819 Return r -> Return r
821820 Effect m -> Effect (fmap loop (trans m))
822- Step f -> Step (fmap loop f)
821+ Step f -> Step (fmap loop f)
823822{-# INLINABLE hoistExposedPost #-}
824823
825824{-# DEPRECATED mapsExposed "Use maps instead." #-}
@@ -852,7 +851,7 @@ destroyExposed
852851destroyExposed stream0 construct theEffect done = loop stream0 where
853852 loop stream = case stream of
854853 Return r -> done r
855- Effect m -> theEffect (fmap loop m)
854+ Effect m -> theEffect (fmap loop m)
856855 Step fs -> construct (fmap loop fs)
857856{-# INLINABLE destroyExposed #-}
858857
@@ -866,7 +865,7 @@ unexposed :: (Functor f, Monad m) => Stream f m r -> Stream f m r
866865unexposed = Effect . loop where
867866 loop stream = case stream of
868867 Return r -> return (Return r)
869- Effect m -> m >>= loop
868+ Effect m -> m >>= loop
870869 Step f -> return (Step (fmap (Effect . loop) f))
871870{-# INLINABLE unexposed #-}
872871
@@ -1101,7 +1100,7 @@ expand :: (Monad m, Functor f)
11011100 -> Stream f m r -> Stream g (Stream h m ) r
11021101expand ext = loop where
11031102 loop (Return r) = Return r
1104- loop (Step f) = Effect $ Step $ ext (Return . Step ) (fmap loop f)
1103+ loop (Step f) = Effect $ Step $ ext (Return . Step ) (fmap loop f)
11051104 loop (Effect m) = Effect $ Effect $ fmap (Return . loop) m
11061105{-# INLINABLE expand #-}
11071106
@@ -1116,7 +1115,7 @@ expandPost :: (Monad m, Functor g)
11161115 -> Stream f m r -> Stream g (Stream h m ) r
11171116expandPost ext = loop where
11181117 loop (Return r) = Return r
1119- loop (Step f) = Effect $ Step $ ext (Return . Step . fmap loop) f
1118+ loop (Step f) = Effect $ Step $ ext (Return . Step . fmap loop) f
11201119 loop (Effect m) = Effect $ Effect $ fmap (Return . loop) m
11211120{-# INLINABLE expandPost #-}
11221121
@@ -1347,9 +1346,9 @@ untilJust :: (Monad m, Applicative f) => m (Maybe r) -> Stream f m r
13471346untilJust act = loop where
13481347 loop = Effect $ do
13491348 m <- act
1350- case m of
1351- Nothing -> return $ Step $ pure loop
1352- Just a -> return $ Return a
1349+ return $ case m of
1350+ Nothing -> Step $ pure loop
1351+ Just a -> Return a
13531352
13541353
13551354cutoff :: (Monad m , Functor f ) => Int -> Stream f m r -> Stream f m (Maybe r )
0 commit comments