2011-01-22 82 views
2

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

回答

3

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

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

注意,你不能使用IOSLA内,因为在没有ArrowIO实例。

希望,这是你需要的。