Where is the Parser monad coming from? If its Parsec, a "seasoned Haskeller" would avoid read (which is re-parsing already parsed data) and use the integer parser from Parsec's Token parser module.[*] [*] The one caveat is that the number parsers in this module follow Haskell's lexical rules - you might not always want this.