solutions to the 99 haskell problems