About (define cons 1). Originally this was not permitted. On my request this was permitted more than a year ago. The remark in the guide must be a left over of old times. The reason I asked for this change is the following: suppose you have a module that imports racket and defines a variable some-name. Now if racket is extended to export a variable of the same name, your module would no longer work. It is a matter of scope. It remains prohibited to import the same variable from two different modules. Jos
_____ From: users-boun...@racket-lang.org [mailto:users-boun...@racket-lang.org] On Behalf Of Harry Spier Sent: lunes, 15 de agosto de 2011 6:02 To: users@racket-lang.org Subject: [racket] DrRacket and Modules When I run the following code in DrRacket it behaves somewhat differently than the documentation says a module should. (module m racket (define x 10) (define cons 1)) The Racket reference says: --------------------------------------------------------------------- One difference between a module and a top-level definition is that a module can be declared without instantiating its module-level definitions. Evaluation of a require instantiates (i.e., triggers the instantiation of) a declared module, which creates variables that correspond to its module-level definitions. For example, given the module declaration (module m racket (define x 10)) the evaluation of (require 'm) creates the variable x and installs 10 as its value. This x is unrelated to any top-level definition of x. -------------------------------------------------------------------------- But when I run the above code, the interactions window shows that x is defined as 10 even though I don't execute a require statement. Also the Racket Guide says: ---------------------------------------------------- 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. A local define or other binding forms, however, can give a new local binding for an identifier that already has a binding; such a binding shadows the existing binding. ------------------------------------------------------ But DrRacket doesn't give an error for (define cons 1) and the interactions window shows cons has been redefined as 1. Could someone explain why the behavior in DrRacket differs in these cases from the documentation. Thanks in advance, Harry Spier
_________________________________________________ For list-related administrative tasks: http://lists.racket-lang.org/listinfo/users