Email list hosting service & mailing list manager


Re: problems with rationale & design campbell@xxxxxx 18 Jun 2004 23:34 UTC

On Sat, 19 Jun 2004, felix wrote:

> bear wrote:
> >
> > On Fri, 18 Jun 2004, Felix Winkelmann wrote:
> >
> >
> >>For example: R5RS Scheme has `load'. Effectively that's all what we need,
> >>and `require-extension' is just a thin wrapper over it, probably doing
> >>some module-specific stuff (like an `import', or something similar).
> >
> >
> > Except that it isn't.
> >
> > Large programs (millions of lines of code plus, like an OS kernel
> > or even a large application) simply can't be managed when your
> > only interface is (load). It is silly to even think about
> > developing them interactively.
>
> a) nobody writes such large programs in Scheme (currently)

That doesn't mean that we ought to not consider such large programs.

> b) `load' is not restricted to interactive use

To be useful, it is.  It operates at run-time, so you can't effectively
load a file that defines macros or reader syntax, or does anything at
all before run-time.  It was furthermore not designed to operate well
with a module system, and it does not: compilers tend to depend on a
great deal of information provided by a module system, and LOAD hides
much of that, such as the set of names that will be defined in the
module.

> > So for the three ecological niches, there are three different
> > optimal solutions. People with different priorities can fight
> > about them forever, fruitlessly, all convinced that the others
> > are "just wrong."  And that, yet again, is what I expect to
> > happen here.  You've just started round N plus 1 of the *&$%
> > holy war that will not die.  Congratulations.
>
> Tell me what PLTs `require' does. It works perfectly with
> a module system. I don't see the problem at all. `require-extension'
> does imply absolutely *nothing* about modules, yet it can be
> compatible with them.

Gah.  You are narrow-mindedly thinking _ONLY_ about PLT's module system
when you consider module systems here!  It would be just as useful for
me to say 'tell me how to implement REQUIRE or a variant thereof in
Scheme48.  It doesn't work at all with a module system.  I foresee all
sorts of problems.  REQUIRE implies a great deal about modules, and it
can't be compatible with them.'  But that's not a useful thing to say,
because I'm not considering anything but Scheme48's module system.
Instead, I shall say that REQUIRE in any form is _not_necessarily_
compatible with all module systems, whereas SRFI 7 _can_always_be_.