[Haskell-beginners] Rewriting using State and/or Reader?