haskell problem 20