haskell solutions to project euler problems