@@ -227,8 +227,14 @@ parseQualified parser = part []
227227-- Parse an integer or floating point value
228228--
229229integerOrFloat :: P.Parsec String u (Either Integer Double)
230−integerOrFloat = (Right <$> P.try (PT.float tokenParser) <|>
231− Left <$> P.try (PT.natural tokenParser)) P.<?> "number"
230+integerOrFloat = (Right <$> P.try (signed PT.float) <|>
231+ Left <$> P.try (signed PT.natural)) P.<?> "number"
232+ where
233+ signed p = do
234+ let sign = (P.char '-' >> return negate) <|> (optional (P.char '+') >> return id)
235+ f <- sign
236+ n <- p tokenParser
237+ return (f n)
232238
233239-- |
234240-- Parse an identifier or parenthesized operator