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