;;; -*- Mode:LISP; Package:MYPACK; Fonts:(MEDFNT MEDFNB); Readtable:CL; Base:10 -*- (unless(find-package 'mypack) (make-package 'mypack :use '("LISP" "OBJ" "GLOBAL"))) (in-package 'mypack) (eval-when(eval compile) (unintern 'foo-thing)) (defkind foo-thing) (defclassvars foo-thing foolist foolabel) (defobfun (foolist foo-thing) () (print foolist)) (defobfun (fooable foo-thing) () (list foolist foolabel)) (defobfun (foo-label foo-thing) () "hi there") (defobfun (foofunc foo-thing) () #'(lambda(x) (print x) (print foolabel))) (defobfun (exist foo-thing) (&rest args &key label &allow-other-keys) (apply #'shadowed-exist args) (fooable) (have 'foolabel (or label foolabel (foo-label))) (foofunc))