あるべき姿としては、コンパイルしてもインタプリタで実行しても
同じように実行できるのがいちばんいいんじゃないの。もっともこれは
Lispが随分苦労してきた問題で、いまだにすっきりした解決は無いと
思うけど。(comp.lang.schemeあたりで、マクロと分割コンパイルの
話題を探すと色々出てくると思う)

マクロと手続き、両方定義したらどうなるかっていう話は、綺麗な仕様は
無いような気がする。ナイーブに上から実行してくインタプリタなら
後から出てきた方が上書きしちゃうだろうけど、例えば別ファイルで
some-operationにset!されたらどうなるかとか。921は何かアイディアがあるのか?