Proposal (breaking change, but probably not one that will break any real code): strictify genericLength

David Feuer david.feuer at gmail.com
Sun Aug 3 02:02:59 UTC 2014


As far as I can tell, Haskell 2010 does not specify anything about the
strictness of genericLength. Currently, it is maximally lazy. This is good,
I suppose, if you want to support lists that are very long and are using
floating point or some similarly broken Num instance.

But this is not something many (any?) people have any interest in doing. As
a result, the genericLength function is on a nice little list I found of
Haskell functions one should never use. I therefore propose that we change
it to something nice and simple, like

genericLength = foldl' 0 (\x _ -> x + 1)

Admittedly, this may not be optimal for Int8, Int16, Word8, or Word16, so
we may need to use rules to rewrite these four to narrow the result of
length (or some such).
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.haskell.org/pipermail/libraries/attachments/20140802/94b1c14b/attachment.html>


More information about the Libraries mailing list