Haskell soln to 3 + more library code