如何解析 Haskell 中的浮点数 (Parsec.Combinator)

How to Parse a floating number in Haskell (Parsec.Combinator)

我正在尝试使用 Parsec.Combinator 库解析 haskell 中的字符串。但我找不到如何解析浮动值。我的函数只读取整数(带数字,但数字只解析整数值)。

parsePoint :: Parser Point
parsePoint = do
              string "Point"
              x <- many1 digit
              char ','
              y <- many1 digit
              return $ (Point (read x) (read y))

我搜索了 Text.Parsec.Number 库,但没有找到如何使用的示例。

感谢阅读

有几个Parser可以解析浮点数,例如floating :: (Floating f, Stream s m Char) => ParsecT s u m f. The Parser is just an alias for a special case of Parsec, depending on which module you use. For example type Parser = Parsec Text ()

如果您的 Point 因此接受例如两个 Float,您可以使用 parsec3-numbers package 并使用:

import Text.Parsec.Char(char, string)
import Text.Parsec.Number(<b>floating</b>)
import Text.Parsec.Text(Parser)

data Point = Point Float Float

parsePoint :: Parser Point
parsePoint = do
              string "Point "
              <b>x <- floating</b>
              char ','
              <b>y <- floating</b>
              return (Point x y)

这就可以解析了,在本例中是一个字符串"Point 3.14,2.718"