マクロと関数について質問なのですが、
例えば+をマクロと関数に分けて作って、
(+ 1 2 3 ...) という直接使用のときはマクロとして可能な限り簡約してしまい、
((if test + -) 1 2 3 ...) みたいなときは関数を選択、という風に使い分けたいのですが、
こういう文脈によって切り分ける事はできるでしょうか?
CommonLisp、Schemeどっちでもいいです。

(CommonLispのシンボルが変数と関数別スロットにあるように、)
マクロと関数が別スロットにあるような処理系ならできそうな気がしますが、
実際のところそういった処理系はあるでしょうか。