solutions to 99 Haskell problems