[GHC] #3709: Data.Either.partitionEithers is not lazy enough

Simon Marlow marlowsd at gmail.com
Thu Dec 3 10:37:11 EST 2009


On 03/12/2009 14:12, Henning Thielemann wrote:
>
> On Thu, 3 Dec 2009, Malcolm Wallace wrote:
>
>>> #3709: Data.Either.partitionEithers is not lazy enough
>>>
>>> This is a behavioural change, e.g.:
>>> Main> case partitionEithers1 [Left 'a', error "Not me"] of (x : _, _)
>>> -> x
>>> Program error: Not me
>>> Main> case partitionEithers2 [Left 'a', error "Not me"] of (x : _, _)
>>> -> x
>>> 'a'
>>
>> Yes, and isn't that the point of the bugfix? No non-bottoming program
>> has changed, but fewer programs fail now. I find it hard to imagine
>> that anyone could have been relying on getting a crash here.
>
> Making something more lazy can cause a memory leak.

and a time leak, or a stack overflow.  People might complain if we made 
foldl' more lazy :-)

Cheers,
	Simon


More information about the Libraries mailing list