http://hackage.haskell.org/packages/archive/hxt/latest/doc/html/Control-Arrow-ArrowTree.html#v:deep
deep :: Tree t => a (t b) c -> a (t b) cSource
递归地在整个树中搜索谓词所包含的子树。搜索是自上而下进行的。当找到一棵树时,这将成为结果列表的一个元素。没有进一步检查找到的树以查找谓词也可以持有的任何子树。请参阅multi
此类搜索。
示例:deep isHtmlTable
选择文档中的所有顶级表格元素(具有适当的定义isHtmlTable
),但表格单元格中没有出现表格。
您可以使用Hoogle或Hayoo找到给定函数名称或类型签名的文档!
基本上,如果 XML 树就像
<p>
<strong id="a">
<em id="b">
<strong id="c">
foo
</strong>
</em>
</strong>
<ins id="d">
<strong id="e">
bar
</strong>
<em id="f">
baz
</em>
</ins>
</p>
deep (isElem >>> hasName "strong") tree
将返回一个列表
<strong id="a">
<strong id="e">
<strong>
因为我们在走进树的时候可以找到这两个s,while(isElem >>> hasName tag) tree
会返回一个空列表,因为树的根是a <p>
,而不是a<strong>