Haskell: improved 2