[racket] module order (was: Delimited continuations and parameters)
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.