Yes, but I'm not sure how to do that, especially because foldl doesn't have the phased NOINLINE that foldr does.
On Aug 15, 2014 12:45 PM, "Dan Doel" <dan.doel@gmail.com> wrote:Isn't this kind of thing fixed for other functions by rewriting back into the direct recursive definition if no fusion happens?On Fri, Aug 15, 2014 at 11:41 AM, David Feuer <david.feuer@gmail.com> wrote:
I'm having trouble when it doesn't fuse—it ends up with duplicate bindings at the top level, because build gets inlined n times, and the result lifted out. Nothing's *wrong* with the code, except that there are multiple copies of it.
On Aug 15, 2014 10:58 AM, "GHC" <ghc-devs@haskell.org> wrote:#9434: GHC.List.reverse does not fuse
-------------------------------------+-------------------------------------
Reporter: dfeuer | Owner:
Type: bug | Status: new
Priority: normal | Milestone:
Component: | Version: 7.9
libraries/base | Keywords:
Resolution: | Architecture: Unknown/Multiple
Operating System: | Difficulty: Easy (less than 1
Unknown/Multiple | hour)
Type of failure: Runtime | Blocked By:
performance bug | Related Tickets:
Test Case: |
Blocking: |
Differential Revisions: |
-------------------------------------+-------------------------------------
Comment (by simonpj):
Great. Just check that when fusion ''doesn't'' take place, the result is
good. And do a `nofib` comparison for good luck. Then submit a patch.
Thanks for doing all this work on fusion, David.
Simon
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/9434#comment:2>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
_______________________________________________
ghc-devs mailing list
ghc-devs@haskell.org
http://www.haskell.org/mailman/listinfo/ghc-devs