2

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

4

1 回答 1

3

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

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

请注意,您不能IOSLA没有ArrowIO实例的情况下使用。

希望,这是你需要的。

于 2011-01-22T14:45:51.763 回答