[GHC] #9344: takeWhile does not participate in list fusion

GHC ghc-devs at haskell.org
Tue Jul 22 07:13:21 UTC 2014


#9344: takeWhile does not participate in list fusion
-------------------------------------+-------------------------------------
              Reporter:  dfeuer      |             Owner:
                  Type:  bug         |            Status:  new
              Priority:  normal      |         Milestone:
             Component:              |           Version:  7.8.3
  libraries/base                     |          Keywords:
            Resolution:              |  Operating System:  Unknown/Multiple
Differential Revisions:              |   Type of failure:  Runtime
          Architecture:              |  performance bug
  Unknown/Multiple                   |         Test Case:
            Difficulty:  Unknown     |          Blocking:
            Blocked By:              |
       Related Tickets:              |
-------------------------------------+-------------------------------------

Comment (by nomeata):

 I have some idea to make the translate/untranslate dance generic (and thus
 reliably usable by people wanting list fusion for their own functions) but
 I’ll ponder it some more.

 Can you explain why it fails in complex cases? And how does it perform? Is
 a fused `takeWhile (<10) [1..10000000]` slower than a non-fused? What
 happens with  `takeWhile (<10) (cycle [1,100])` (if `cycle` fuses at all).

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


More information about the ghc-tickets mailing list