[plt-scheme] namespace-attach-module and sharing modules between evals
Hi everyone,
The following three modules is a small test case I'm building to better
understand namespace-attach-module:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(module brick mzscheme
(define-struct brick (a b))
(provide (struct brick (a b)))
(printf "brick.ss is invoked~n"))
(module evaluation mzscheme
(provide (all-defined))
(define (module-path->symbol module-path)
((current-module-name-resolver) module-path #f #f))
(define (make-evaluation-namespace)
(let ([ns (make-namespace)]
[main-ns (current-namespace)])
(parameterize ([current-namespace ns])
(namespace-attach-module main-ns
(module-path->symbol "brick.ss")
ns)
ns))))
(module test-evaluation mzscheme
(require "evaluation.ss"
"brick.ss")
(define my-ns (make-evaluation-namespace)))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Unfortunately, it doesn't work; when I invoke the test-evaluation module,
I see the following:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
brick.ss is invoked
evaluation.ss::323: namespace-attach-module: a different module with
the same name is already in the destination namespace, for name:
|,/home/dyoo/brick|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
This disturbs me a lot, because I'm taking most of this from web-server;
(lib "configuration.ss" "web-server") appears to do the same kind of
tricks here in the-make-server-namespace, and I'm not yet seeing why what
I'm doing here is different. I've tested this under both DrScheme and
mzscheme 3.01.15-svn22may2006, as well as mzscheme 301-stable.
Any help would be greatly appreciated. Thank you!