如何解决如何在HaskellParsec.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
。 Parser
只是Parsec
特殊情况的别名,具体取决于您使用的模块。例如type Parser = Parsec Text ()
。
如果您的Point
这样接受了两个Float
,则可以使用parsec3-numbers
package并使用:
import Text.Parsec.Char(char,string)
import Text.Parsec.Number(floating)
import Text.Parsec.Text(Parser)
data Point = Point Float Float
parsePoint :: Parser Point
parsePoint = do
string "Point "
x <- floating
char ','
y <- floating
return (Point x y)
然后它可以解析字符串"Point 3.14,2.718"
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。