Hi Dan, At Fri, 26 Aug 2011 08:09:11 -0700, Dan Grossman wrote: > 7. I'm having trouble understanding modules and the rules about > re-definitions. I need to re-read Chapter 6 for a third time, cook up > from examples, and post a full message just on this topic.
For what it's worth, but I just rewrote section 6.1. Here's the latest version: http://pre.racket-lang.org/docs/html/guide/module-basics.html The `raco link' tool described in 6.1.2 only exists in the latest Racket. I still need to revise the rest of the chapter, so let me know if you have other specific thoughts. > I think > the User's Guide docs are partly to blame for my confusion. To pick > on two examples I'm ready to discuss: > > a. Section 4.2 reports, "A module-level define can bind only > identifiers that are not already bound within the module. For example, > (define cons 1) is a syntax error in a racket module, since cons is > provided by racket." Whether this is true perhaps depends on what you > mean by "a racket module". A module written in the racket language > seems to have no trouble re-defining cons internally at its top-level: > #lang racket > (define cons +) > (cons 1 2) ; 3 The Guide is wrong. That claim was true when I wrote it, but we changed modules to allow identifiers from the language to be shadowed by definitions in the module. I'll fix the Guide. > b. The contracts chapter reports, "To experiment with multiple modules > within a single module or within DrRacket’s definitions area, use the > racket/load language. The contents of such a module can be other > modules (and require statements), using the longhand parenthesized > syntax for a module (see The module Form)." This would have been very > good to know in the Modules chapter, or at the very least an explicit > comment that racket modules can't contain other modules. (Sorry if I > missed it.) That said, for simplicity, I'm tempted for my class to > stick to racket and simply use multiple files for my modules examples > -- if nothing else, it helps indicate that Racket isn't a toy language > where everything goes in one file. I'll probably defer this change. It may become possible to nest modules in the near future. Thanks! _________________________________________________ For list-related administrative tasks: http://lists.racket-lang.org/listinfo/users

