Haskell problem 21