マクロを使って作業しているときに、私はある条件を保持するAST内のノードを更新する必要があるという点に挑戦してきました。たとえば、のは、私は、各ノードを更新したいとしましょう:不変のASTを更新する最も簡単な方法は何ですか?
Literal(Constant(1))
値で:
Literal(Constant(2))
これらのASTノードは、式ツリー内のどこにでも可能性があり、私はアドホックを使用することはできませんパターンマッチャー。明らかに、私がやりたい最後のことは、すべてのコンパイラプリミティブをカバーできるフルパターンマッチャーをコーディングすることです。私はAPIで検索していましたが、私はのようなメソッドがとのトラバーシブルなファミリーを集めているという印象を持っています。ツリーを線形のものとして扱い、全体を更新したいからです。結果としてツリー。ですから、スマートな方法で不変式の式ツリーを更新することは可能ですか?なぜ標準APIにこのような「更新」操作が存在しないのですか?
TreeTransformerがあります。私は、おそらく同じマクロでも同じようなものがなければならないと思います。 – pedrofurla
おそらく、あなたは[zippers](http://anti-xml.org/zippers.html) –
@ NikitaVolkovをチェックしたいと思うでしょう。もし彼がマクロの文脈で質問していなかったら、 – pedrofurla