proclaimとdeclaimの違いについて教えてください。
前者が関数、後者がマクロで、前者は実行時のみ、後者はコンパイル時にも効果を持つということみたいですが

(eval-when (:execute :compile-toplevel :load-toplevel)
(proclaim '(special *x*)))

が (declaim (special *x*)) と同等と考えていいんでしょうか。

コンパイラにとっては実行時のproclaimは意味なしに思えるのですが合ってますか?