Simon Peyton Jones pushed to branch wip/T23109a at Glasgow Haskell Compiler / GHC
Commits:
-
6cd9b8b6
by Simon Peyton Jones at 2025-04-22T17:47:48+01:00
1 changed file:
Changes:
... | ... | @@ -1809,7 +1809,12 @@ build g = g (:) [] |
1809 | 1809 | |
1810 | 1810 | augment :: forall a. (forall b. (a->b->b) -> b -> b) -> [a] -> [a]
|
1811 | 1811 | {-# INLINE [1] augment #-}
|
1812 | -augment g = g (:)
|
|
1812 | +-- Give it one argument so that it inlines with one arg
|
|
1813 | +-- But (crucially) the body is a lambda so that `g` is visibly applied
|
|
1814 | +-- to two args, and hence we know that in a call
|
|
1815 | +-- augment (\c n. blah)
|
|
1816 | +-- both c and n are OneShot
|
|
1817 | +augment g = \xs -> g (:) xs
|
|
1813 | 1818 | |
1814 | 1819 | {-# RULES
|
1815 | 1820 | "fold/build" forall k z (g::forall b. (a->b->b) -> b -> b) .
|