[GHC] #9781: Make list monad operations fuse

GHC ghc-devs at haskell.org
Wed Nov 12 06:55:22 UTC 2014


#9781: Make list monad operations fuse
-------------------------------------+-------------------------------------
              Reporter:  dfeuer      |            Owner:  dfeuer
                  Type:  task        |           Status:  closed
              Priority:  normal      |        Milestone:  7.10.1
             Component:  Core        |          Version:  7.9
  Libraries                          |         Keywords:
            Resolution:  fixed       |     Architecture:  Unknown/Multiple
      Operating System:              |       Difficulty:  Unknown
  Unknown/Multiple                   |       Blocked By:
       Type of failure:  Runtime     |  Related Tickets:
  performance bug                    |
             Test Case:              |
              Blocking:              |
Differential Revisions:  Phab:D455   |
-------------------------------------+-------------------------------------

Comment (by dfeuer):

 Replying to [comment:7 schyler]:
 > It would be nice to understand why the `mapM` change did anything at
 all. That's an enormous difference. I wonder how much real code in the
 wild has similar properties (is it a lack of INLINEing?)

 I believe it's either a lack of inlining or an unfortunate effect of full
 laziness. I haven't tried to dig into that particular one so deeply. Short
 cut fusion is great stuff, but it's on the finicky side; writing library
 functions so they don't themselves rely on it seems to be a good idea in
 many cases. The inliner will be less likely to over-estimate their cost, I
 believe.

--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/9781#comment:8>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler


More information about the ghc-tickets mailing list