[Haskell-beginners] homogeneous value list

Thomas Davie tom.davie at gmail.com
Fri Mar 12 09:39:18 EST 2010


On 12 Mar 2010, at 14:33, Ozgur Akgun wrote:

> 
> 
> On 12 March 2010 14:28, Thomas Davie <tom.davie at gmail.com> wrote:
> 
> On 12 Mar 2010, at 14:25, Salil Wadnerkar wrote:
> 
>> On Fri, Mar 12, 2010 at 10:21 PM, Ozgur Akgun <ozgurakgun at gmail.com> wrote:
>>> Another boring variant from me then.
>>> 
>>> isHomogeneous xs = all (first==) xs
>>>     where first = head xs
>> 
>> 
>> Shouldn't
>> head xs
>> give an exception on an empty list?
> 
> An error, and only if it's evaluated.  Lazy evaluation means it's not evaluated here.
> 
> Of course another non-strict algorithm *might* evaluate head xs here, so this version won't work in all possible Haskell implementations, only the current ones which use lazy evaluation.
> 
> Bob
> 
> 
> So we need to make sure our code would work in a strict environment, even though we are using a lazily evaluated language, just in case if someone comes up with a not-that-lazy implementation of haskell?
> 
> If I was thinking this way, I would just stop using haskell at all.

Not quite, you need to make sure your code works in *all* non-strict evaluation models.  Lazy evaluation is not the only non-strict evaluation method, another implementation of non-strict semantics might actually evaluate head xs.

Bob
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.haskell.org/pipermail/beginners/attachments/20100312/6fd97c5a/attachment.html


More information about the Beginners mailing list