4

私はHXTの使い方を理解しようと多くの時間を費やしています。私はを使用して例に反対し続けdeepます。何をしdeepますか?

たとえば、このコードには次のものがあります。

atTag tag = deep (isElem >>> hasName tag)

もう一つの例:

-- case-insensitive tag matching
atTagCase tag = deep (isElem >>> hasNameWith ((== tag') . upper . localPart))
  where tag' = upper tag
        upper = map toUpper
4

1 に答える 1

8

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>ツリーに足を踏み入れたときにこれらの2つを見つけることができるのに対し、ツリーのルートは、ではなく、(isElem >>> hasName tag) treeであるため、空のリストが返されます。<p><strong>

于 2010-10-10T07:07:58.240 に答える