我可以帮您进行翻译。以下是关于在Haskell中使用解析器组合的方法,作者给出了下面的解析器组合器示例:
作者提出采用这种方法的原因如下:
我正在研究以下方法,用于在Haskell中使用解析器组合器。作者举了解析器组合器的以下示例:
windSpeed :: String -> Maybe Int
windSpeed windInfo =
parseMaybe windSpeedParser windInfo
windSpeedParser :: ReadP Int
windSpeedParser = do
direction <- numbers 3
speed <- numbers 2 <|> numbers 3
unit <- string "KT" <|> string "MPS"
return speed
作者提出采用这种方法的原因如下:
- 易于阅读(我同意这一点)
- 格式类似于规范,即解析器本身基本上是对其解析的描述(我同意这一点)
我不禁感觉自己错过了选择解析器组合子的一些原因。可能是使用Haskell带来的一些好处,例如编译时的保证、消除运行时错误。或者在开始解析DSL和使用自由单子时带来的一些后续好处。
我的问题是:使用解析器组合器的原因是什么?
key="value"
的解析器,然后重复该解析器以解析任意数量的键/值对,然后解析标签,然后解析标签层次结构等。 - Willem Van Onsem