Fixing the performance problem of the expression parser

This patch basically mimics what is done in Parsec. Without this change,
Text.Parser.Expression is about 120 times slower than Text.Parsec.Expr.