将状态添加到HXT解析

时间:2011-01-22 13:12:26

标签: haskell hxt

我正在尝试编写一个箭头,它将使用HXT从XML解析生成编号元素。好像应该使用状态箭头,就像状态monad一样,但我可以在HXT包中找到的所有示例和访问状态的方法(XmlState)都使用IOStateArrow而我更愿意使用StateArrow保持纯粹以简化测试过程。存在这样的变种吗?如果没有,我如何将状态添加到HXT解析而不必在IO中运行箭头?

1 个答案:

答案 0 :(得分:3)

您可以使用ArrowStateSLA实例。 一个例子:假设我们需要连接所有二级文本元素。

Prelude Text.XML.HXT.Core> fst $ runSLA (xread >>> getChildren >>> getChildren >>> isText >>> getText >>> changeState (++)) "" "<xml><item>a</item><item>b</item></xml>" 
"ab"

请注意,您无法在IO内使用SLA,因为没有ArrowIO个实例。

希望,这是你需要的。