我試圖使用Control.Arrow.ArrowTree構建一個HTML處理箭頭,該箭頭在給定樹中第一次成功轉換(深度優先)後停止。即同類型HXT:如何在第一次成功轉換後停止處理?
processFirst :: (ArrowTree a, Tree t) => a (t b) (t b) -> a (t b) (t b)
例如,要添加的類別「第一次」的第一個列表項的HTML文檔中的一個功能,一個可以建立箭頭
processFirst (hasName "li" `guards` addAttr "class" "first")
我是相當新到HXT,我一直在閱讀API文檔幾個小時,並試圖找出如何實現processFirst
,但我一直無法將所有的東西放在一起。起初聽起來很有希望,但是該函數僅僅停止了特定子樹的處理,所以它仍然會轉換除嵌套元素之外的所有元素。