
Am Freitag 12 März 2010 15:25:48 schrieb Salil Wadnerkar:
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?
Only if it's demanded, which it isn't here, since all doesn't look at the condition when facing an empty list. But it's good practice to never call head on a list which may be empty, so I wouldn't like Ozgur's variant in real code. It's great for golf, though :D
Guess what? You do not need the special case for [], because "all _ [] = True" allways. So if the list is empty, it won't even try evaluating "first".
Cheers,
On 12 March 2010 14:08, Daniel Fischer
wrote:
Am Freitag 12 März 2010 14:41:11 schrieb Daniel Fischer:
isHomogeneous :: Eq a => [a] -> Bool isHomogeneous [] = True isHomogeneous (x:xs) = all (== x) xs
Variant, getting rid of the special case for an empty list:
isHomogeneous :: Eq a => [a] -> Bool isHomogeneous xs = and (zipWith (==) xs (drop 1 xs))