I never realized that a guard can be used as an extension of a pattern. Is this recommended coding? elem n xs asks whether n is an element of xs
elem :: (Eq a) => a -> [a] -> Bool
elem _ [] = False
elem n (x:_) | n == x = True
elem n (_:xs) = elem n xs