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 16:09:24 UTC 2014


That settles it. One is enough. Original proposal retracted. New proposal:
add genericLength'.
On Aug 3, 2014 8:56 AM, "Edward Kmett" <ekmett at gmail.com> wrote:

> I would be -1 on changing genericLength to be strict. I for one _have_
> been known to use genericLength with the one point compactification of the
> naturals to get lazy bound comparisons and use this in production code.
>
> However, I would be +1 on adding a separate strict genericLength' to call
> attention to the issue.
>
> -Edward
>
>
> On Sat, Aug 2, 2014 at 10:02 PM, David Feuer <david.feuer at gmail.com>
> wrote:
>
>> 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).
>>
>> _______________________________________________
>> Libraries mailing list
>> Libraries at haskell.org
>> http://www.haskell.org/mailman/listinfo/libraries
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.haskell.org/pipermail/libraries/attachments/20140803/5e03e284/attachment.html>


More information about the Libraries mailing list