Plaster
New
List
Login
common-lisp
default
scymtym
2023.10.22 14:43:42
(define-standard-macro defclass (environment name superclass (slot :parsed t) metaclass (default-initarg :parsed t) documentation option) (let ((slots (mapcar (lambda (slot-specifier) (parts-bind (name initarg type reader writer accessor allocation initform) (ses:slot-specifier slot-specifier) `(ensure-slot ',name ',initarg ',type ',reader ',writer))) slot)) (default-initargs (mapcar (lambda (default-initarg) (parts-bind (name initform) (ses::default-initarg default-initarg) `(list ',name ',initform (lambda () ,initform)))) default-initarg))) `(progn (eval-when (:compile-toplevel) (note-class-defined ',name)) (ensure-class :name ',name :superclasses ',superclass :slots (list ,@slots) :metaclass ',metaclass :default-initargs (list ,@default-initargs) :documentation ',documentation :options ',option))))
Raw
Annotate
Repaste