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