(define-class (counter) (instance-vars (count 0)) (class-vars (total 0)) (method (next) (set! total (1+ total)) (set! count (1+ count)) (list count total))) (define-class (person name) (method (say stuff) stuff) (method (ask stuff) (ask self 'say (se '(would you please) stuff))) (method (greet) (ask self 'say (se '(hello my name is) name))) ) (define-class (pigger name) (parent (person name)) (method (pigl wd) (if (member? (first wd) '(a e i o u)) (word wd 'ay) (ask self 'pigl (word (bf wd) (first wd))) )) (method (say stuff) (if (not (pair? stuff)) (ask self 'pigl stuff) (map (lambda (w) (ask self 'pigl w)) stuff))) ) (define-class (squarer) (default-method (* message message)) (method (7) 'buzz) ) (define-class (counter) (instance-vars (count 0)) (class-vars (total 0) (counters '())) (initialize (set! counters (cons self counters))) (method (next) (set! total (1+ total)) (set! count (1+ count)) (list count total))) (define-class (pigger name) (parent (person name)) (method (pigl wd) (if (member? (first wd) '(a e i o u)) (word wd 'ay) (ask self 'pigl (word (bf wd) (first wd))) )) (method (say stuff) (if (not (pair? stuff)) (if (equal? stuff 'my) (usual 'say stuff) (ask self 'pigl stuff)) (map (lambda (w) (ask self 'say w)) stuff))) )