Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xml 提前终止xeno SAX解析器_Xml_Haskell_Sax - Fatal编程技术网

Xml 提前终止xeno 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(

是一个快速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
选项允许在处理程序中提前终止
进程
?提前终止是指
流程
退出时不处理文档的其余部分,即不进行额外工作

我知道可以使用IO和异常来完成。它可以在IO中完成而不使用控制流异常吗?没有IO能做到吗

从上面的类型中,我们甚至可以确定,或者我们还需要知道
过程的定义吗

编辑:


请假定
m
需要支持状态,并且该状态需要在短路后可用。

您可以从
进程的类型签名中确定,而不必看到其实现:答案是明确的“是的,您可以使其提前终止”。是典型的早期退出monad transformer系列。使用或立即终止控制流。

当然可以这样做。不过,在解决方案空间中有许多不同的选项。完成后,您希望获得什么信息,通常是通过短路还是通过短路?@Carl我希望
m
存储一些状态,并在短路后检索该状态。应该说清楚的。如果它使事情变得更简单,让我们假设我想找到具有特定名称的第一个节点,读取其属性的所有值,然后终止并拥有属性的
映射ByteString ByteString
。谢谢!我终于明白了。实际上
(MonadState ParseState m,MonadError ParseException m)
似乎很好地完成了这项工作,我可以使用
runExceptT
runState
的简单组合来运行它。