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

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

On Fri, 29 Apr 2011, Andre van Tonder wrote:

> On Fri, 29 Apr 2011, Andre van Tonder wrote:
>> On Fri, 29 Apr 2011, John Cowan wrote:
>>>> WG2 will have explicit renaming only.
>>> If you're curious: explicit renaming was voted up 4-0; syntactic
>>> closures voted down 1-3; and syntax-case tied with 3-3 (with one vote
>>> for sending it to a future WG), which means it failed.  There were 11 WG
>>> members at the time, of which 2 did not vote at all.
>> I hope the committee took into account that for systems like Racket and Chez
>> that are based on a native psyntax-type macro implementation, providing ER
>> macros would adversely affect the complexity class of such macros, because in
>> these systems an extra code walk is necessary to fully unwrap each input to the
>> ER transformer.
> Also, they cannot just use the original ER system, becasue it is not compatible
> with modules or with syntax-case.  They would have to adopt a modified version
> of ER such as the one provided in R6RS Larceny.  This adaptation has a couple of
> additional primitives.  They are
>     bound-identifier=? (procedure) - to compare bindings that are syntax
>                                      objects, where original ER would use eqv?
>     datum->syntax      (procedure) - for hygiene breaking where original ER
>                                      would have inserted raw symbols into
>                                      the output, incompatible with modules
>                                      and with syntax-case

So you see that once you have accomodated modules and hygiene breaking 
correctly as in Larceny, you basically end up with an explicit renaming system 
that is SYNTAX-CASE without the pattern matching (the compare procedure 
argument to the ER transformer is identical to FREE-IDENTIFIER=?, and you have 
to provide BOUND-IDENTIFIER=? and DATUM->SYNTAX anyway as above).

So all that is missing is the pattern-template matcher and you have syntax-case.

And since you already have gone to the trouble of implementing the 
pattern-template matcher-inserter in WG1 (for SYNTAX-RULES), the 
question becomes why /wouldn't/ you use it in WG2 and get syntax-case?

Scheme-reports mailing list