Re: problems with rationale & design campbell@xxxxxx 22 Jun 2004 17:04 UTC

On Tue, 22 Jun 2004, felix wrote:

> xxxxxx@autodrip.bloodandcoffee.net wrote:
>
> >>I have answered that already. Apparently not to your full satisfaction.
> >>I have nothing to add.
> >
> > You have given _no_answer_ but 'my tastes disagree,' and your tastes
> > are _nowhere_near_ as important as valid technical merit, which you
> > have given _no_ indication of in this SRFI.  Saying 'it's too
> > complicated' is, first of all, entirely subjective -- there go your
> > tastes again --, and moreover demonstrably over-dramatized.
>
> I did say what I consider technical merit, but you chose to ignore it.

Is the only technical merit you ever considser your personal taste?
That's all that you seem to be considering here, anyway.

> >>>This problem is _easily_solved_ with a suggestion I have made _many_
> >>>times -- though which you seem to have readily ignored --: just make an
> >>>amendment to SRFI 7 that specifies this!
> >>
> >>No, I won't do that. Otherwise SRFI-55 wouldn't have been submitted.
> >
> > Huh?  SRFI 55 wouldn't have been submitted if it were merely an
> > amendment to SRFI 7?
>
> I (we, actually) wouldn't have submitted SRFI-55, if we would have
> been interested in amending SRFI-7 (because then we would have done
> so). It's quite easy to understand, IMHO.

Sorry, I think we're getting tangled up in terminology.  Perhaps what
you're referring to by 'SRFI 55' is the current specification, whereas
what I mean is just this SRFI in general, be it an amendment to SRFI 7,
REQUIRE, or whatever -- something related to features.

> >>I don't like SRFI-7, for reasons that I already described.
> >
> > This alone is _no_reason_ to deliberately alienate certain module
> > systems.
>
> I think "alienate" is too strong, and indicates that you
> just get a little bit too emotional over the whole issue.
>
> As I said before, If Scheme48's module system is not able to
> cope with require-extension, then it's unfortunate, but can't
> be helped.

Yes, it _can_: by using a separate configuration language, rather than
embedding module data into Scheme code!

>            Yor argument looks somewhat artifical: by proposing
> a feature that Scheme48 can not implement you accuse me of
> "alienating certain implementations", but on my reply that
> this implementation may choose to ignore SRFI-55, you accuse
> me of trying to "fracture" the Scheme community. Yet, this
> very implementation (Scheme48) chooses to ignore SRFI-0, thus
> doing exactly that ("fracturing").

I can't do anything about SRFI 0, Felix, and Feeley, as far as I know,
ignored the last few arguments that were made against an embedded
COND-EXPAND on the SRFI 0 discussion!  The only option for Scheme48 in
the SRFI 0 case is to ignore it, but since SRFI 55 is not yet set in
stone, I can still argue against it and attempt to change it.  SRFIs 0
& 55 _force_ the fracturing: Scheme48 _can't_help_it_; all it _can_ do
is ignore them.  You're trying to accuse Scheme48 of fracturing itself,
but _you_ are in fact creating the fracture!

> > As I said earlier, a significant reason for why SRFI 7 isn't widely
> > used because it's not very widely implemented, and a significant reason
> > that it's not widely implemented because it's not widely used.  That's
> > no basis for technical argument.
>
> It is of course a basis for a technical argument. Sometimes one
> should look at the existing situation and draw conclusions from
> actual, practical use - from experience, so to speak. Implementors
> like to add SRFIs to their feature-list, and SRFI-7 isn't particularly
> hard to implement, so why are so few implementations supporting
> it? Did it stop implementors to add support for certain SRFIs, when
> they where freshly finalized, even though nobody was actually using them,
> yet? Of course not (they were new after all).

SRFI 0 was already in existence, and I believe it was finalized, by the
time SRFI 7 was submitted.  SRFI 0 worked with many implementations,
and those implementors who didn't read the discussion archives probably
found SRFI 7 to be unnecessarily repetitive, _ignoring_ the problems it
causes with all module systems that have a certain property.

> > You just said that certain implementations shouldn't restrict others.
> > SRFI 55 -- effectively, Chicken, for the sake of this point --
>
> Interesting... Chicken? Why not PLT? Are you trying to say something
> here?

I chose it just because it's an implementation that supports something
like REQUIRE.  Chicken was the first implementation that came to mind
while writing that sentence.

> >                                                                is
> > restricting Schemes to module systems that embed module data in Scheme
> > code, whereas SRFI 7 is not.  Therefore you just contradicted yourself
> > by saying that certain implementations shouldn't restrict others while
> > at the same time supporting one that does.
>
> You forget that implementations have a choice. They may choose to
> implement SRFI-7 or SRFI-55, according to whatever they prefer.
> It's you who claims to know The Right Way, and who apparently wants to
> make that choice for others.

I'm not claiming, and I don't think I have in this discussion claimed
-- aside from mentioning what advantages Scheme48 can gain --, that a
separate configuration language is inherently better.  But it _does_
permit _not only_ module systems that use a separate configuration
language but _also_ module systems that embed module data into Scheme
code.  REQUIRE does _not_ permit both.  So, to elaborate on the choice:

  - For implementations that use a separate configuration language,
    there is _only_one_choice_: SRFI 7, or some other configuration
    language (like the one I pointed out on c.l.scheme recently).
  - For implementations that embed module data into Scheme code, they
    can either use SRFI 7 _or_ a REQUIRE mechanism.

With your arguments of 'it's cleaner & simpler,' those implementations
that _can_ support a REQUIRE mechanism will probably be led to believe
it's a better thing to do.  But those implementations that _can't_ will
be left trying to convince the others that they're being left out and
alienated _completely_unnecessarily_.  The separate configuration
language is _NOT_ much more complicated, and it does _NOT_ arbitrarily
alienate certain implementations.

If you continue with a REQUIRE-like mechanism, the implementations that
depend on a separate configuration language are _FORCED_ not to support
the SRFI, but the implementations that already support such a mechanism
would feel _ENCOURAGED_ to support SRFI 55.  That is a _very_clear_
fracture that should _not_be_there_.  In this situation, _YOU_ are
making the choice for all these implementations, and the choice will
cause a _fracture_!

If there were SRFIs only for a separate configuration language, the
implementations that depend on one could easily manage with the
SRFIlized one, and those that do not can _also_ easily manage.  There's
_no_ fracture there, there are _hardly_ any more added keystrokes, and
everyone is happy except for the few who mourn that little bit of white
space on their screen that was filled in with SRFI 7 code.  This choice
_doesn't_ have to influence the native module system in a Scheme, and
it _doesn't_ cause fracture & alienation of certain implementations.

(Remember, though: for all those little quick scripts you write, you
can _still_ use REQUIRE, because your implementation supports it, and
portability doesn't matter there!  Indeed, if I wanted to save those
keystrokes while using scsh, I'd use the -o option on the scsh command
line, which is _even_more_concise_ than REQUIRE!)