[plt-scheme] domain language hacking, and arguing with the module system
I've been hacking on a domain language in my copious free time;
mzscheme seems rather well suited for this. I only wish I were more
competent at it.
I'm having a lot of trouble with how I would like to interact with
the module system. mzscheme's module system looks like it'll give me
exactly what I want, but there are devils in the details -- I need to
name the modules I want to require with a little indirection.
I want to be able to say things like
(define foo-release
"foo_stable_2003_02_19_beta_RELEASE_2003_03_12")
(define bar-release
"bar_stable_2003_02_19_beta_RELEASE_2003_02_19")
(require (release foo-release "foo.ss"))
(require (release foo-release "baz.ss"))
(require (release bar-release "bar.ss"))
where the require form effectively becomes
(require (file "./release/foo_stable_2003_02_19_beta_RELEASE_2003_03_12/foo.ss"))
(by way of fiddling with the module-name-resolver)
However, this approach seems a little problematic given the
compile time nature of require. I've been flailing around at this,
but thus far have failed to come up something that actually works. I
can get something that works a little further with something like
(define-release ...)
where define-release is a macro that communicates with the
module-namespace-resolver through a shared module, but that still doesn't
work.
I'm playing around with printf'ing the world. The exact sequence of
when modules get compiled/evaled and particurlarly the
module-name-resolver and its data module give hints as to the nature
of the problem, but I'm at a loss how to get What I Want from all
this. I don't know if I'm going about this the right way, or if I
want is readily achievable.
Any free clues for the clueless? If I need to explain the bigger
picture of "why are you trying to do this to yourself?", I can do so.