haskell problem 30