Bartosz Wójcik wrote:
Hi Everybody (especially Parsec Creator),

is there any reason why float parses only positive numbers?

I find following defition:

float           = lexeme floating   <?> "float"

floating        = do{ n <- decimal
                        ; fractExponent n
                        }

If floating was defined like

floating        = do{ n <- integer ...

or

floating        = do{ n <- int ...

instead then it would parse negative ones as well.

Hi Bartek,

I had the same problem. Daan Leijen gave me a similar answer than Malcom Wallace just gave you:

"Usually the minus sign is treated as an operator in the language and treated as a 
separate token"

He also gave me a workaround which finally resulted in this:

myfloat = try (do{ symbol "-"; n <- float; return (negate n) }) <|>

         try float <|>

do { i<-integer; return(fromIntegral i) } -- 0 is not recognized as a float, so recognize it as an integer and then convert it to float



_______________________________________________
Haskell-Cafe mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to