Per,

Regarding what variable references that module B does to module A, that are updated when A has been changed and you import A again (for instance through importing B again) -

given a.scm:

(print "Module A import\n")
(define exported-var 'something)

And b.scm:

(import a)

(define (work-when-separate) exported-var)
(begin (declare (block)) (define (work-when-block) exported-var))

(define work-closure1 (lambda () exported-var))
(define work-closure2 (let ((c exported-var)) (lambda () c)))

(define structure (cons exported-var 'something-tihrd))

And doing (import b) in BH

And then altering a.scm into:

(print "Module A import\n")
(define exported-var 'something-else)

And doing (import b) again, thus reimporting a:

I get something-else from (work-when-separate), (work-when-block) and (work-closure1), both when B is executed in interpreted and compiled mode.

Even if it's great from incremental development point of view; should it really be like this?

Mikael