立て続けに質問ですまんが、hxt には意味不明なことが多すぎ
hxt の Arrow の <+> って意味的には OR だよね

deep (isText <+> (getName >>> mkText))

こうやると、"/" タグの直下にひとつ、
元xmlのトップのタグの名前を内容に持つテキストノードだけがあるxmlが得られた

予想では、<+> の左辺に isText があるんだから、元xmlの全テキストノードに、
getName >>> mkText で得られる何かが追加されたxmlが得られると思ってた
getName >>> mkText では何も得られないかも知れんが、
それでも isText で得られるテキストノードだけは得られると思ってた

が、予想に反して得られたのはトップのタグ名が書かれたテキストノードひとつだけ

試しに isText <+> hasName "存在しないタグ名" とやると、
ちゃんと isText の分の全テキストノードが得られる
つまり、hasName "存在しないタグ名" の結果が空でも isText の方は生きる

<+> の右辺って、左辺に(または逆に)影響を与えるもんなんだろうか

hxt ライブラリのソースの ListArrow.h や IOStateListArrow.h などを見てみたが、
<+> 演算は基本的に2つのリストを ++ 演算で結合してるだけに見えるんだが・・・

何か使い方がおかしい?