A milestone was passed recently.  After months, years
even, of silence on the wire, there are more emails
arriving here from r6rs-discuss than from spam.

This message is therefore a digest with a few
general remarks before the main point.

I wish the list had less argument couched in undefined
or misused terms.  "Module" is not defined in the report,
and is used only in the rational to describe what was
*not* done.  Make a complete SRFI module proposal and
then argue about it.  Ditto with other vague terms.

> From: John Cowan <[email protected]>
> 
> you simply must expand macros at the place of use,
> not the place of invocation.

Is this a typo?  I don't understand the difference between
use and invocation.

"One-pass", "two-pass", and "recursive one-pass",
(whatever the Sam Hill that means), are implementation
techniques.  Talk of "one-pass semantics" is confusing,
or confused.  The issue, if there is one, is the region
of visibility [r6rs,5.2] of each binding occurrence of
an identifier.

I assert, and take to be the position of R6RS,
that in each region there is at most one defining
occurrence of each identifier.

But I hear "What about the REPL?  We need to re-define
things!".  The REPL should not be standardized, and
there should be no expectation that the *only* thing you
do interactively is to type complete Scheme programs.

The purpose of a standard is so that we can exchange
progams and libraries.  It has no business dictating
what I type to my favorite Scheme on my own computer.

I don't want a REPL, I want a REPEL (pronounce like
rappel), that is, a read-eval-print and *edit* loop.
To edit a definition that already exists is not at
all like typing it all over again.

In Perfect Scheme interactive mode if I type:

  (define pi 3.14)
  (define pi 22/7)

a window pops up; it asks if I want to keep the
old definition, replace it with the new, rename
one, or comment one of them out.  I can choose
with mouse or keyboard, but *not* by typing more
Scheme code.

If I type:

  (* pi pi)

the computer types

  ;==> 9.8596

or maybe

  ;==> 484/49

and leaves it there.  If I edit the definition of pi,
the computer edits its answer.  When I am done editing,
I can mail the final version to you.  You will be able
to run it, because it is a standard Scheme top-level
program.

You have a dumb terminal connected to Toaster Scheme.
When you type the above two definitions, maybe it
overwrites the first with the second.  Maybe it
gives you an error message.  Maybe it burns the toast.
I don't care.  That's between you and your implementation.
It's not in the standard.  It may take a while for
you to produce a standard Scheme top-level, but eventually
it's done.  You mail it to me and I can run it.

If there is more than one defintion of pi in the
final result, I will send you a bug report, because
that is bad programming at best, and I hope it
remains a syntax error in R9RS.

To avoid stupid misunderstandings, there should be
a non-normative appendix that describes a few
ways that interactive mode could work.  It should
mention that it is good taste for an implementation
to provide a way to start interactive mode with some
libraries already imported.

     -- Keith

Pensaran vuestras mercedes ahora que
  es poco trabajo hinchar un perro?
    -- un loco de Seville
Pensara vuestra merced ahora que
  es poco trabajo hacer un libro?
    -- Miguel de Cervantes, Don Quijote II

_______________________________________________
r6rs-discuss mailing list
[email protected]
http://lists.r6rs.org/cgi-bin/mailman/listinfo/r6rs-discuss

Reply via email to