Hello people,

I've been fumbling around with cyclic dependencies and such and have started 
looking at signatures and units. I manage to make the cycles work out in a 
couple different ways, but I'm running into trouble when I try to put different 
parts in different files the way I want them. As far as I can tell it has to do 
with how much of a file/module is "loaded" if I really just want to require one 
of its submodules. Not particularly certain.

It's pretty possible that I'm just doing everything wrong and backwards, or 
should really not be trying to do this to begin with, or something :)

So: Does anyone know if it is possible to do something along the lines of

- a.rkt with two submodules:
    - a-sig: provides signature a^
    - a-impl:
        - requires a-sig
        - requires b-sig from b.rkt
        - provides unit a@ (which imports b^ and exports a^)
- b.rkt with two submodules:
    - b-sig: provides signature b^
    - b-impl:
        - requires b-sig
        - requires a-sig from a.rkt
        - provides unit b@ (which imports a^ and exports b^)

without getting

standard-module-name-resolver: cycle in loading
  at path: ...\dep\b.rkt
  paths:
   ...\b.rkt
   ...\a.rkt

?

I get it to work by putting all 4 modules in the same file. And I get it to 
work by putting them in 4 different files. But if I want one file for both the 
a-things and one for both the b-things I get the error above. Presumably 
because (a submodule in) "a.rkt" requires (a submodule from) "b.rkt", and other 
way around. (Even though the "b.rkt"-submodule required in "a.rkt" does *not* 
require anything from "b.rkt", and other way around.)

Examples:
 * seems to work: https://gist.github.com/Glorp/c36bcb3af0d8586ec733
 * doesn't seem to work: https://gist.github.com/Glorp/86e59ced2bd838d2161c

-- 
You received this message because you are subscribed to the Google Groups 
"Racket Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to racket-users+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to