
On 12 Mar 2010, at 14:33, Ozgur Akgun wrote:
On 12 March 2010 14:28, Thomas Davie
wrote: On 12 Mar 2010, at 14:25, Salil Wadnerkar wrote:
On Fri, Mar 12, 2010 at 10:21 PM, Ozgur Akgun
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