我正在查看following approach在Haskell中使用解析器组合器。作者给出了以下Parser Combinators的例子:
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
作者给出了这种方法的以下原因:
我不禁觉得我错过了选择解析器组合器的一些原因。 using Haskell,编译时guarantees,elimination运行时错误的一些好处。当您启动parsing DSL and using免费monad时,或者一些后续好处。
我的问题是:使用解析器组合器的原因是什么?
答案 0 :(得分:2)
我发现使用解析器组合器有几个好处: