2010年11月5日金曜日

declare-top

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 件のコメント:

コメントを投稿