haskell hard way part3