[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Scheme-reports] <body> of let-syntax
- To: Jim Rees <jimreesma@x>
- Subject: Re: [Scheme-reports] <body> of let-syntax
- From: John Cowan <cowan@x>
- Date: Sun, 19 Jan 2014 23:46:19 -0500
- Cc: scheme-reports <scheme-reports@x>
- In-reply-to: <CAHwMy1_oEi=fdcDhvjzdV4VRZs1XS0u3p2sGcH8VonS=eYNyrg@mail.gmail.com>
- References: <52DC3A31.5070102@ymail.com> <CAHwMy1_oEi=fdcDhvjzdV4VRZs1XS0u3p2sGcH8VonS=eYNyrg@mail.gmail.com>
Jim Rees scripsit:
> ...for that matter shouldn't it also be "zero or more expressions" ?
>
> ..and while this may already have been mentioned in the past, it may
> not be possible to decide what the elements of <body> are (definitions
> or expressions) until after expanding them using the syntax definitions
> provided.
No. This is one of the places where R5RS, R6RS, and R7RS differ.
In R5RS, there is an inconsistency between 4.3.1, which says that the
<body> of a `let-syntax` consists solely of expressions, and 5.2.2 and
the formal syntax in 7.1.3, which say that <body> may have internal
definitions as well. `Let-syntax` is a block contour, and any internal
definitions are local to that contour.
In R7RS, 4.3.1 was adjusted (incorrectly) to agree with the other
two cases. That makes `let-syntax` work like `let`.
In R6RS, however, `let-syntax` is like `begin`: when used in a definition
context, its <body> must consist of definitions, but when used in a
expression context, its <body> must consist of expressions. In the former
case, the definitions are spliced into the surrounding lexical contour.
I have made the correction in the repo, and added the correction as
erratum 13 to the R7RSSmallErrata page on the wiki.
--
John Cowan cowan@x http://ccil.org/~cowan
Half the lies they tell about me are true.
--Tallulah Bankhead, American actress
_______________________________________________
Scheme-reports mailing list
Scheme-reports@x
http://lists.scheme-reports.org/cgi-bin/mailman/listinfo/scheme-reports