DECLAREとDECLAIMとPROCLAIMの違い

http://groups.google.com/group/comp.lang.lisp/browse_thread/thread/aced55aeed5f6ef2/e4b7902d0d84fc68 を見ると、DECLAREはそのブロックの中だけで有効で、DECLAIMとPROCLAIMは大域的に作用すると書いてある。
DECLAIMとPROCLAIMの違いは、PROCLAIMは関数でありDECLAIMはマクロ。PROCLAIMはCOMPILEまたはCOMPILE-FILEが必要なため使われることは稀。DECLAIMはマクロなので引数は評価されずに、PROCLAIMへ展開される。

(declaim (optimize speed))

(eval-when (:compile-toplevel :load-toplevel :execute)
  (proclaim '(optimize speed)))

は等価。