git.iko.soy/rowtype-yoga/purescript-native
on golang help sign in
Fix #403
f17896dPhil Freeman
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 (
24) where
24) where
25
25
26import Data.Maybe (isJust, fromMaybe)
26import Data.Maybe (isJust, fromMaybe)
27+
27import Control.Applicative
28import Control.Applicative
29+import Control.Arrow ((+++))
28
30
29import Language.PureScript.Parser.State
31import Language.PureScript.Parser.State
30import Language.PureScript.Parser.Common
32import Language.PureScript.Parser.Common
@@ -365,7 +367,12 @@ parseBooleanBinder :: P.Parsec String ParseState Binder
365parseBooleanBinder = BooleanBinder <$> booleanLiteral
367parseBooleanBinder = BooleanBinder <$> booleanLiteral
366
368
367parseNumberBinder :: P.Parsec String ParseState Binder
369parseNumberBinder :: 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
369
376
370parseVarBinder :: P.Parsec String ParseState Binder
377parseVarBinder :: P.Parsec String ParseState Binder
371parseVarBinder = VarBinder <$> C.parseIdent
378parseVarBinder = VarBinder <$> C.parseIdent