Skip to content

Data.List.inits is extremely slow

As discussed on libraries@haskell.org, Data.List.inits is extremely slow (try running print $ length $ inits [1..100000] if you don't believe me). As discussed, there are at least two reasonable fixes. One of them (named initsR in the attached) is a one-liner and gives very good performance in general, but poor performance in certain cases that may or may not appear in real code. The other (named initsQ in the attached) is slightly more complex and slightly slower in general, but its performance appears to be robust. I would personally lean toward initsQ for Data.List.

Trac metadata
Trac field Value
Version 7.8.3
Type Bug
TypeOfFailure OtherFailure
Priority normal
Resolution Unresolved
Component libraries/base
Test case
Differential revisions
BlockedBy
Related
Blocking
CC ekmett, hvr
Operating system
Architecture
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information