I'm working on a #lang for configuration files for a larger project I'm working on, and I'm trying to find a setup that meets my (largely cosmetic) goals without producing a "standard-module-name-resolver: cycle in loading" error.
I would like both to write "local.rkt" and "production.rkt" in "#lang my-project/config" and to have "(require my-project/config)" provide bindings re-exported from "local.rkt" and "production.rkt" and some extra bindings for working with those values.
This seems like it should be doable, because there aren't any logical cyclic dependencies, but I haven't found a way to convince Racket of that.
I initially tried making a "my-project/config/lang/" directory with a "module-lang.rkt" and a "reader.rkt" consisting of "(module reader syntax/module-reader my-project/config/lang/module-language)", then having "config.rkt" require and re-export "local.rkt", "production.rkt", and the appropriate exports of "module-lang.rkt", but this gave me a "cycle in loading" error.
My first guess was that the problem might be that Racket was looking for a reader submodule of "config.rkt", so I re-wrote "module-lang.rkt" and "reader.rkt" as submodules of "config.rkt" (with "module", not "module*" or "module+"), but this didn't solve the problem.
Is there a way to do what I want?
-Philip