On 12 Mar 2010, at 14:25, Salil Wadnerkar wrote:

On Fri, Mar 12, 2010 at 10:21 PM, Ozgur Akgun <ozgurakgun@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