[GHC] #13351: Investigate a foldr rule for short static lists

GHC ghc-devs at haskell.org
Tue Feb 28 19:28:20 UTC 2017


#13351: Investigate a foldr rule for short static lists
-------------------------------------+-------------------------------------
           Reporter:  nomeata        |             Owner:  (none)
               Type:  task           |            Status:  new
           Priority:  normal         |         Milestone:
          Component:  Compiler       |           Version:  8.1
           Keywords:                 |  Operating System:  Unknown/Multiple
       Architecture:                 |   Type of failure:  None/Unknown
  Unknown/Multiple                   |
          Test Case:                 |        Blocked By:
           Blocking:                 |   Related Tickets:
Differential Rev(s):                 |         Wiki Page:
-------------------------------------+-------------------------------------
 GHC.Base says:

 {{{
 -- The foldr/cons rule looks nice, but it can give disastrously
 -- bloated code when commpiling
 --      array (a,b) [(1,2), (2,2), (3,2), ...very long list... ]
 -- i.e. when there are very very long literal lists
 -- So I've disabled it for now. We could have special cases
 -- for short lists, I suppose.
 -- "foldr/cons" forall k z x xs. foldr k z (x:xs) = k x (foldr k z xs)

 "foldr/single"  forall k z x. foldr k z [x] = k x z
 "foldr/nil"     forall k z.   foldr k z []  = z
 }}}

 I wonder if we should extend the list of rules at the bottom to a few more
 list lengths, as the comment suggests.

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


More information about the ghc-tickets mailing list