Haskell solution to problem 1