git.iko.soy/rowtype-yoga/purescript-native
on golang help sign in
Merge pull request #576 from purescript/403

Fix #403

commit7af735593e6af3c0ec942cef83b9bd6f04df0e17 authorPhil Freeman <paf31@cantab.net> dateMon 25 Aug 2014, 08:51 (12 years ago) parent21b4a49f17896d
2 files changed+15−1
examples/passing/NegativeBinder.purs+7 src/Language/PureScript/Parser/Declarations.hs+8−1
examples/passing/NegativeBinder.pursnew file+7
@@ -0,0 +1,7 @@
1+module Main where
2+
3+test :: Number -> Boolean
4+test -1 = false
5+test _ = true
6+
7+main = Debug.Trace.trace "Done"
src/Language/PureScript/Parser/Declarations.hs+8−1
@@ -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