asdas asda

sadas

sadas

Here is some good stuff


stuff

I really want to tell you all about this.

(defclass fourth-grader () ((teacher :initarg :teacher :initform "Mrs. Marple" :accessor fourth-grade-teacher) (name :initarg :name :reader name) (school :initarg :school :initform "Lawrence School" :accessor school) (age :initarg :age :initform 9 :accessor age)))

 (defparameter *my-slots* (make-hash-table)
 
 (defmacro in (class var &rest body) 
   `(with-slots ,(gethash class *my-slots*) ,var 
      ,@body))
 
 (defmacro defclass* (class parents &rest slots)
   (labels ((worker (slot)
             (if (atom slot)
                 (prim slot nil)
                 (prim (first slot) (second slot))))
           (prim (slot init)
             (push slot (gethash class *my-slots*))
             (defslot* class slot init)))
     `(defclass ,class ,parents ,(mapcar #'worker slots))))
 (defun defslot* (class slot init)
   `(,slot :initarg ,(intern (up slot) "KEYWORD")
          :initform ,init
          :accessor ,(intern (up class '- slot))))
 
 (defun up (&rest all)
   (with-output-to-string (s)
     (dolist (one all)
       (format s "~:@(~a~)" one))))


Example

pretty cool

In action

 (defclass* 4grade ()
   name
   (age 9)
   (teacher "msrs marple")
   (school "lawrnce"))
 (defun xxx (self b c)
   (in 4grade self
       (incf age (+ b c))
       age))