Solving 99 (or a bit fewer) problems in Haskell