[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: problems with rationale & design

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)
b) `load' is not restricted to interactive use

I think that it all comes down to a clash between development
styles.  I think any "requirement" or "extension" or "module"
language that doesn't support separate compilation misses the
point, but that's at least partly because I'm more interested
in large applications.  Other people, including you apparently,
think that a system that's hard to use from the command line
is too ugly for words.

What nonsense. Nobody is talking about command-lines here.
`load' is not necessarily restricted to source code (see R5RS), and
many implementations extend it to load compiled code. Additionally,
`load' was merely an example.
I use an equivalent of `require-extension' with separate compilation,
daily. I haven't yet found any problems with it. Extending it to handle
separately compiled modules is not a problem.

And yet others will consider it broken
if it's not an enclosing form, which allows definitions to be
made in multiple different environments in the same input
stream, but which can't be used from the command line because
you want results before you type the closing paren on the
enclosing form.

Huh? What are you talking about?

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.