2
我正在嘗試編寫一個箭頭,它將從HXT的XML解析中生成編號的元素。它似乎應該用狀態箭頭來完成,就像State monad一樣,但是我可以在HXT包中找到的所有示例以及訪問狀態(XmlState)的方法都使用IOStateArrow,我寧願保持它純粹用StateArrow簡化測試過程。這樣的變體是否存在?如果沒有,我將如何將狀態添加到HXT解析中,而不必訴諸運行IO中的箭頭?將狀態添加到HXT解析
我正在嘗試編寫一個箭頭,它將從HXT的XML解析中生成編號的元素。它似乎應該用狀態箭頭來完成,就像State monad一樣,但是我可以在HXT包中找到的所有示例以及訪問狀態(XmlState)的方法都使用IOStateArrow,我寧願保持它純粹用StateArrow簡化測試過程。這樣的變體是否存在?如果沒有,我將如何將狀態添加到HXT解析中,而不必訴諸運行IO中的箭頭?將狀態添加到HXT解析
您可以使用SLA的ArrowState實例。 一個例子:假設我們需要連接所有的二級文本元素。
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
實例。
希望,這是你需要的。