[plt-scheme] (require... ) expanded from a macro

From: Matthew Flatt (mflatt at cs.utah.edu)
Date: Sun Oct 22 02:24:09 EDT 2006

At Sun, 22 Oct 2006 05:09:29 +0300, "Dan Muresan" wrote:
> What works in PLT is adding (require "plt-fix.scm") at the top of
> main.scm. That way I can use the IDE features.

Some of them will work, mostly. Compared to module-based programs,
there are technical limits (of the halting-problem variety) to how much
DrScheme can support programs that are not in `module'.

You probably know this, but I repeat it every once in a while to make
sure we're all on the same page.

> However, (require ...) throws off other implementations. Of course, if
> PLT had SRFI-0 built-in, I could just say
> (cond-expand (plt (require "plt-fix.scm")))
> and live with one codebase.
> Tell me again why this behavior cannot be implemented in PLT? Surely
> PLT "knows its own name". If this behaviour can be emulated by a
> "user-space" macro, surely it could be supported natively.

You're right that there's no technical reason. 

I think this is the only example where MzScheme lacks a popular feature
simply because it's a poor solution that we reject on principle. (I can
think of cases where we reject a language feature because it would harm
other parts of the language, but that doesn't apply in this case.)
Normally, we err on the side of providing too much.

R6RS provides a good solution. The `library' form of R6RS is not
everything that I (or anyone else I know) would like, but it's at least
a sound approach, and we'll support it.


Posted on the users mailing list.