【发布时间】:2012-04-22 02:44:12
【问题描述】:
我正在尝试使用 Control.Arrow.ArrowTree 构建一个 HTML 处理箭头,该箭头在给定树中的第一次成功转换(深度优先)后停止。 IE。具有类型的函数
processFirst :: (ArrowTree a, Tree t) => a (t b) (t b) -> a (t b) (t b)
例如,要将“first”类添加到 HTML 文档中的第一个列表项,可以构建箭头
processFirst (hasName "li" `guards` addAttr "class" "first")
我对 HXT 比较陌生,我已经阅读 API 文档几个小时了,并试图弄清楚如何实现 processFirst,但我无法将所有部分组合在一起. processTopDownUntil 起初听起来很有希望,但该函数仅停止对特定子树的处理,因此它仍将转换除嵌套元素之外的所有元素。
【问题讨论】: