[racket] module order (was: Delimited continuations and parameters)

From: Matthew Flatt (mflatt at cs.utah.edu)
Date: Wed May 16 09:17:38 EDT 2012

At Tue, 15 May 2012 10:49:20 -0400, Matthias Felleisen wrote:
> ISSUE 1: I am disturbed that submodule b is evaluated before submodule a. 

I've long resisted defining the order in which `require'd modules are
instantiated, but let's try it. I'll push a change so that
instantiation of a module instantiates its `require'd modules in the
order in which they are `require'd.

(Surprising to me, the only thing that I saw break with this change was
a test in the module test suite.)

Keep in mind that relying on the instantiation order is still generally
a bad idea. Also, `require'd modules are still instantiated before the
module body expressions are evaluated (and I don't think we should try
to change that), so running

 #lang racket

 (module one racket/base 1)
 (module three racket/base 3)

 (require 'one)
 2
 (require 'three)

prints 1, 3, 2, not 1, 2, 3.


Posted on the users mailing list.