Perl6にはASTを操作する本格的なマクロがある。それをわかりやすく解説したポスト: http://strangelyconsistent.org/blog/macros-what-are-they-really コードからASTを得る quasi { <コード> } quasiはQuineという哲学者の「quasi-quote」というコンセプトに由来している。ちなみにこれはクワイン プログラムの由来の人でもある。 マクロ宣言: macro <マクロ名> { } macro HOGE { quasi { $*ERR.say("OH HAI") } } マクロの呼び出し HOGE(); 関数のようなシンタックス。Cのようにマクロは大文字にするのが慣習のようだ。ただし… マクロへの引数はその値ではなくて、コンパイラによりコードから変換されたAST ASTをコードに埋め込む: {{{AST}}