Commit 83ca42de authored by Ben Gamari's avatar Ben Gamari 🐢 Committed by Marge Bot

Revert "Make scanr a good producer and consumer"

This reverts commit 4e1dfc37.

Due to #16943.
parent f1d0e49f
Pipeline #9330 failed with stages
in 766 minutes and 56 seconds
......@@ -385,29 +385,11 @@ foldr1 f = go
-- Note that
--
-- > head (scanr f z xs) == foldr f z xs.
{-# NOINLINE [1] scanr #-}
scanr :: (a -> b -> b) -> b -> [a] -> [b]
scanr _ q0 [] = [q0]
scanr f q0 (x:xs) = f x q : qs
where qs@(q:_) = scanr f q0 xs
{-# INLINE [0] strictUncurryScanr #-}
strictUncurryScanr :: (a -> b -> c) -> (a, b) -> c
strictUncurryScanr f pair = case pair of
(x, y) -> f x y
{-# INLINE [0] scanrFB #-} -- See Note [Inline FB functions]
scanrFB :: (a -> b -> b) -> (b -> c -> c) -> a -> (b, c) -> (b, c)
scanrFB f c = \x (r, est) -> (f x r, r `c` est)
{-# RULES
"scanr" [~1] forall f q0 ls . scanr f q0 ls =
build (\c n -> strictUncurryScanr c (foldr (scanrFB f c) (q0,n) ls))
"scanrList" [1] forall f q0 ls .
strictUncurryScanr (:) (foldr (scanrFB f (:)) (q0,[]) ls) =
scanr f q0 ls
#-}
-- | \(\mathcal{O}(n)\). 'scanr1' is a variant of 'scanr' that has no starting
-- value argument.
scanr1 :: (a -> a -> a) -> [a] -> [a]
......
......@@ -57,6 +57,8 @@
`Word`, and `WordN` now throw an overflow exception for negative shift
values (instead of being undefined behaviour).
* `scanr` no longer participates in list fusion (due #16943)
## 4.12.0.0 *21 September 2018*
* Bundled with GHC 8.6.1
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment