{- This should strictly speaking cause a complaint as `head' is being
redefined after being defined in the Prelude. Personally I prefer
nhc's behaviour, but it should be noted that this is not standard
Haskell behaviour. -}
head :: [a] -> Maybe a
head [] = Nothing
head (x:xs) = Just x
main :: IO ()
main = print (head [True])