2011-01-22 81 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實例。

希望,這是你需要的。