file:lmdcls.lisp
(defmacro declare-top (&rest decl-specs)
`(eval-when
,(cond (*macro-file* #+gcl '(compile eval load)
#-gcl '(:compile-toplevel :load-toplevel :execute) )
(t #+gcl '(eval compile) #-gcl '(:compile-toplevel :execute)))
,@(loop for v in decl-specs
unless (member (car v) '(special unspecial)) nconc nil
else
when (eql (car v) 'unspecial)
collect `(progn
,@(loop for w in (cdr v)
collect #-(or gcl scl cmu ecl)
`(remprop ',w
#-excl 'special
#+excl 'excl::.globally-special.)
#+(or gcl scl cmu ecl)
`(make-unspecial ',w)))
else collect `(proclaim ',v))))
0 件のコメント:
コメントを投稿