Xml 提前终止xeno SAX解析器
是一个快速XML解析库。它的SAX风格解析函数具有以下类型:Xml 提前终止xeno SAX解析器,xml,haskell,sax,Xml,Haskell,Sax,是一个快速XML解析库。它的SAX风格解析函数具有以下类型: 过程 ::单子m =>(ByteString->m())--^Open标记。 ->(ByteString->ByteString->m())--^Tag属性。 ->(ByteString->m())--^End open标记。 ->(ByteString->m())--^Text。 ->(ByteString->m())--^Close标记。 ->(ByteString->m())--^CDATA。 ->ByteString ->m(
过程
::单子m
=>(ByteString->m())--^Open标记。
->(ByteString->ByteString->m())--^Tag属性。
->(ByteString->m())--^End open标记。
->(ByteString->m())--^Text。
->(ByteString->m())--^Close标记。
->(ByteString->m())--^CDATA。
->ByteString
->m()
是否有一个m
选项允许在处理程序中提前终止进程
?提前终止是指流程
退出时不处理文档的其余部分,即不进行额外工作
我知道可以使用IO和异常来完成。它可以在IO中完成而不使用控制流异常吗?没有IO能做到吗
从上面的类型中,我们甚至可以确定,或者我们还需要知道过程的定义吗
编辑:
请假定m
需要支持状态,并且该状态需要在短路后可用。您可以从进程的类型签名中确定,而不必看到其实现:答案是明确的“是的,您可以使其提前终止”。是典型的早期退出monad transformer系列。使用或立即终止控制流。当然可以这样做。不过,在解决方案空间中有许多不同的选项。完成后,您希望获得什么信息,通常是通过短路还是通过短路?@Carl我希望m
存储一些状态,并在短路后检索该状态。应该说清楚的。如果它使事情变得更简单,让我们假设我想找到具有特定名称的第一个节点,读取其属性的所有值,然后终止并拥有属性的映射ByteString ByteString
。谢谢!我终于明白了。实际上(MonadState ParseState m,MonadError ParseException m)
似乎很好地完成了这项工作,我可以使用runExceptT
和runState
的简单组合来运行它。