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)))
は等価。