おはようございます。お返事をありがとうございます!
> この説明に従うと仮定すると“BAR”の後に“FOO”が出力される
> はずです(実際はそうならない)。
ありゃ。こんなシンプルな反例があるとは…orz。
(理屈じゃなくて、観察に基づく推論の場合には、すべての場合を
カバーするように注意深くサンプルを選ばないと、こういうことに
なってしまうのですね…)
【例2】で挙げた:
\expandafter\meaning\noexpand\foo
の場合と同様に:
\expandafter\bar\noexpand\foo
の一回展開では "\noexpand\foo" が \relax になっているのでしょ
うけれど、それが、\bar の展開の後に、再度展開処理に曝された際、
\relax のママ実行されているのですね…。
> 「何らかの処理が挟まった後に、再び展開処理に曝された場合」
という考え方でうまく説明できるんじゃないかなと思ってしまった
のですが、ダメでしたか~。
でも、ご応答をいただいて、自分の考えの足りていない点をご指摘
いただけると、考えるヒントやチャンスをいただけるので、とても
ありがたいです。ありがとうございます。
(さて、それでは、どう考えたら、厳密ではなくとも、\noexpand
の動作がうまく説明できるのでしょう…)