XML を解析しようとしていますが、特定のノードから決定された数の子のみをフィルタリングして抽出したいと考えています。例えば:
<root>
<node id="a" />
<node id="b" />
<node id="c" />
<node id="d" />
</root>
そして、矢印を実行するgetChildren >>> myFilter 2
と、ID が「a」と「b」のノードのみが返されます。
直感的には、追跡するにはステート アローを使用する必要がありますが、その方法がわかりません。
私はそれを自分でやろうとしましたが、それは私が望んでいるものとはまったく異なり、非常にエレガントに見えず、機能しません. 初期状態として整数パラメーターを使用して一連の矢印を実行し、runSLA
次を定義しようとします。
takeOnly :: IOSLA Int XmlTree XmlTree
takeOnly = changeState (\s b -> s-1)
>>> accessState (\s b -> if s >= 0 then b else Nothing)
しかし、もちろん を返すことはできませんNothing
。XmlTree を返す必要があります。しかし、私は何も返したくありません!
そこにはおそらくもっと良い方法があります。手伝って頂けますか?
お時間をいただきありがとうございます。