関数型プログラミング言語Haskell Part15
■ このスレッドは過去ログ倉庫に格納されています
0629デフォルトの名無しさん
2011/09/14(水) 21:18:52.20hxt の 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つのリストを ++ 演算で結合してるだけに見えるんだが・・・
何か使い方がおかしい?
■ このスレッドは過去ログ倉庫に格納されています