(define-module (foo-acc) #:use-module (oop goops) #:export ( )) (define %props '("x" "y")) (define-class ()) (define (compute-extra-slots props slots) (map (lambda (prop) (let ((name (string->symbol prop)) (acc (string->symbol (string-append "!" prop))) #;(gen (make #:name acc))) #;(module-define! (current-module) acc gen) #;(make #:name name) #;(make #:name name #:getter name) (make #:name name #:accessor acc))) props)) (define-method (compute-slots (class )) (let* ((slots (next-method)) (extra (compute-extra-slots %props slots))) (slot-set! class 'direct-slots (append (slot-ref class 'direct-slots) extra)) (append slots extra))) (define-class () #:metaclass )