I will second the idea behind this request. (I thought I had to use dynamic-require's second argument in the summer, and after studying it for quite a while, i was happy to figure out a way around it.)
On Sep 14, 2012, at 3:17 PM, Carl Eastlund wrote: > I just tried to figure out what the second argument of dynamic-require does > when it's not a symbol, for the nth time. First of all, the current > interface -- 0, #false, and (void) as tokens for three rather arbitrary modes > of operation -- leaves much to be desired. These other modes should probably > be other functions, or one other function with flags that are more mnemonic. > > Second, the documentation of these modes is based on the technical terms > "instantiate", "visit", and "available", which I find incredibly arcane. > Even now that I have looked them up and know what they mean (I _think_), I > don't know why these particular words were chosen for the concepts they > represent. > > To the best of my understanding, "instantiate" means "allocate space for, and > run, the relative-phase 0 content of a module"; "visit" means the same thing > at relative-phase 1. Neither the terms nor their documented definitions > actually indicate this close relationship; I had to puzzle it out to realize > they are almost the same thing, essentially differing only by add1. I would > much prefer related terms, or even just one term used with a phase number. > Otherwise I'm running around with two words for what seems to be just one > concept. I'm also confused that there is no term for running module contents > at higher phases. > > The term "available" appears to mean "queued up for on-demand instantiation". > Could we perhaps just say "lazily instantiated" here or something? Again, > the word "available" here doesn't really suggest what's going on to me. > Especially because to a user, the module doesn't actually become any more > available than it was; it's only to the runtime implementation that the > module suddenly becomes "available". And I don't think Matthew's C code > reads the documentation very often. (Though that would be impressive!) > > Of course, if I've interpreted these terms incorrectly, there's a further > problem with either the explanation or my reading comprehension. > > I can certainly understand how the documentation got to this state. The > module system is incredibly complicated, and at the outset I wouldn't know > what to name anything, either. And I would imagine dynamic-require's > interface has evolved over time. Now that we've had it a while, though, I > think we can do a lot to improve the clarity of these features. I hope > someone who understands them better than I do can take a stab at it. > > Carl Eastlund > _________________________ > Racket Developers list: > http://lists.racket-lang.org/dev _________________________ Racket Developers list: http://lists.racket-lang.org/dev