I tend to define such constants in a file dubbed 'basics' and require it everywhere. See
https://github.com/mfelleisen/Acquire for example. There 'basics' contains the constants I need for most of the game implementation and some simple functions too. -- Matthias On Nov 3, 2013, at 12:45 PM, Stephen Bloch wrote: > Program P uses several functions (say, f and g) which can be implemented in > several different ways (think of (f,g) as a Java interface, with (f1,g1) as > one implementing class, (f2,g2) as another implementing class, etc.) I'd > like to be able to run the program with one implementation, then with minimal > effort run it again with a different implementation. > > The f and g functions, naturally, take some information from P. But some of > the information they need really is changeable from one call to the next > (make it parameters to f and g), while other information is read from a data > file on each invocation of P, and won't change for the duration of that run > of P, so it feels more natural to store that information in a global constant > C. > > If I were putting implementations of f & g in the same source file with P, I > would just define C in that source file, and implementations of f & g could > refer to it by name. But putting the implementations of f & g into the main > source file makes it a pain to plug in a different implementation. If C were > simple to define, I would provide it from another source file that all these > other files require… but C is defined by parsing a data file; is that going > to happen once for each source file that requires it? > > What's an "approved" way to structure this sort of thing? Is this a job for > parameterize? > > (In case you're curious about the application, it's an animated visualization > of a graph-coloring problem, and I want to have students plug in their own > algorithms for graph-coloring. C is the adjacency relation, the list of > available colors, a couple of things like that. My students have never heard > of parameterize, but that's the least of my worries right now.) > > > Stephen Bloch > sbl...@adelphi.edu > GPG key at http://home.adelphi.edu/sbloch/sbloch.pubkey.asc > > ____________________ > Racket Users list: > http://lists.racket-lang.org/users ____________________ Racket Users list: http://lists.racket-lang.org/users