Using Higher Order Functions in Haskell