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

Re: [Scheme-reports] ANN: first draft of R7RS small language available

On Mon, Apr 18, 2011 at 10:58:49AM +0900, Alex Shinn wrote:
> > I might be missing something but AIUI when an underscore doesn't appear
> > in the <template> part of a <syntax rule>, the behaviour of that macro
> > is exactly the same whether the underscore is treated as a wildcard or
> > not.
> The only difference is if you use multiple wildcards in the pattern,
> which would have been an error in R5RS.  I'm not particularly fond
> of the syntax, but I suppose it helps if you have lots of subpatterns
> that you don't care about and don't want to think up descriptive
> names.

I see. I knew I was overlooking something :)

I still think it's a superfluous feature.  How often does this occur, and
is it really so much work to think up variable names like ignore1 ignore2
etc?  Like I pointed out in my previous mail, we don't have anything like
it elsewhere either; when you have a lambda with several arguments you
want to ignore, there's no special wildcard syntax for that.  Same goes
for the exception variables in the new guard clause etc.

> > Section 6.3.7:
> >
> > The blob interface could be simplified by getting rid of
> > partial-blob and partial-blob-copy! and making blob-copy and blob-copy!'s
> > signatures accept optional arguments:
> I agree, I'll add a ticket for this.

Thank you.

> > Section 7.1:
> >
> > This says case is insignificant in the BNF; but it isn't really when the
> > Scheme is not in case-folding mode.  Possibly only for #x and a few
> > others?  For example, are the <expression keyword>s case-insensitive?
> > If case is insignificant, why are there uppercase letters under
> > <hex digit>?
> The BNF is case-insensitive.  The uppercase letters in <hex digit> are
> for emphasis.  I thought I had removed the <expression keywords>s
> and <syntactic keywords> - Scheme has no reserved words, and I'm
> not sure what the original motivation for them was.

What about all the <expression> productions?  They're case-insensitive
while the Scheme may be in case sensitive mode.  They also contain
literals like LET, IF, SET! etc, whereas the module system allows for
renaming or omitting those from import.

The BNF seems too rigid to allow for the "dynamic" compile-time nature
of Scheme-with-modules.

"The process of preparing programs for a digital computer
 is especially attractive, not only because it can be economically
 and scientifically rewarding, but also because it can be an aesthetic
 experience much like composing poetry or music."
							-- Donald Knuth

Scheme-reports mailing list