(use coops) (module foo (get-acc) (import chicken scheme) (use coops) (use srfi-69) (define *accs* (make-hash-table)) (define (get-acc s) (or (hash-table-ref/default *accs* s #f) (and (hash-table-set! *accs* s (make-generic-procedure a)) (hash-table-ref *accs* s))))) (module m1 (a1 .foo) (import chicken scheme) (use coops) (import foo) (define-class a1) (define .foo (get-acc 'foo)) (register-generic-procedure .foo) (define-method (.foo (o a1)) 1)) (module m2 (a2 .foo) (import chicken scheme) (use coops) (import foo) ;;(import (only m1 foo)) (define-class a2) (define .foo (get-acc 'foo)) (register-generic-procedure .foo) (define-method (.foo (o a2)) 2)) (import m1 m2) (print "2=" (.foo (make a2))) (print "1=" (.foo (make a1))) ;; 2=2 ;; 1=1