ふと思いついて,パタンマッチでコンパイルタイムにマクロメタプログラミングできないのかねぇと. ようするに,C++ のこれがやりたかった. template<int n> struct fact{enum{fn = n * fact<n - 1>::fn};}; template<> struct fact<0>{enum {fn = 1};}; ノリ的にはこういう風に書きたいんだけど… (疑似コード) (defmacro fact (0) 1) (defmacro fact (n) `(* n (fact ,(- n 1)))) そして,(fact 10) とかが 3628800 という静的な形でソースコード上に貼り付けられて欲しい. しっかし,よく考えたら,Common Lisp の macro は (今日一日調べた限りでは…) テンプレートの特殊化とかできないから,単に上書きされるだけ