我试图使用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
,但我一直无法将所有的东西放在一起。起初听起来很有希望,但是该函数仅仅停止了特定子树的处理,所以它仍然会转换除嵌套元素之外的所有元素。