@@ -24,7 +24,9 @@ module Language.PureScript.Parser.Declarations (
2424) where
2525
2626import Data.Maybe (isJust, fromMaybe)
27+
2728import Control.Applicative
29+import Control.Arrow ((+++))
2830
2931import Language.PureScript.Parser.State
3032import Language.PureScript.Parser.Common
@@ -365,7 +367,12 @@ parseBooleanBinder :: P.Parsec String ParseState Binder
365367parseBooleanBinder = BooleanBinder <$> booleanLiteral
366368
367369parseNumberBinder :: P.Parsec String ParseState Binder
368−parseNumberBinder = NumberBinder <$> C.integerOrFloat
370+parseNumberBinder = NumberBinder <$> (C.lexeme sign <*> C.integerOrFloat)
371+ where
372+ sign :: P.Parsec String ParseState (Either Integer Double -> Either Integer Double)
373+ sign = (P.char '-' >> return (negate +++ negate))
374+ <|> (P.char '+' >> return id)
375+ <|> return id
369376
370377parseVarBinder :: P.Parsec String ParseState Binder
371378parseVarBinder = VarBinder <$> C.parseIdent