侵入性のデフォルトはやっぱり侵入的か
パターンの侵入性に関して、デフォルトは非侵入的にすると書いた(→「非侵入的パターンと侵入的パターン - 檜山正幸のキマイラ飼育記 メモ編」)。しかし、やっぱり侵入的かもしれない。
侵入的パターンだと、意図しない重複出力が生じる。これが問題なので非侵入的パターンが欲しいわけだ。しかし、非侵入的パターンでは「検索漏れ」が発生する。なぜなら、見つかったノードの子孫ノード群の検索をしないからだ。
* <div>$:attrs</>
このようなパターンだと、すべてのdiv要素を列挙できない。重複出力はすぐに気づくが、検索漏れは気づきにくい。不注意からバグ(意図せぬ挙動)を引き起こす可能性がある。
重複出力に気付いたら、バッククォートを付けるということでいいかもしれない。例えば:
* <div>$:text</>
は重複出力を生むだろう。
* `<div>$:text</>
と直せばよい。このとき、バッククォートは非侵入的パターンを識別する。