data List a = Nil | Cons a (List a) hasEvenLength :: List a -> Boolean hasEvenLength l = do even Nil = True even (Cons _ t) = odd t odd Nil = False odd (Cons _ t) = even t even l main = hasEvenLength (Cons (1 :: Integer) (Cons (2 :: Integer) (Cons (3 :: Integer) (Cons (4 :: Integer) Nil)))) -- true