On Sep 13, 2009, at 3:58 PM, Andre van Tonder wrote:
> On Sun, 13 Sep 2009, Brian Mastenbrook wrote:
>
>> On Sep 13, 2009, at 3:47 PM, Andre van Tonder wrote:
>>
>>> By following the example of R6RS and declaring it to be an error.
>>
>> Did you try that code in any implementation of the R6RS?
>
> Yes, I wrote the implementation of macros and modules
> for R6RS Larceny. The examples are from the tests for
> R6RS compliance that come with the implementation,
> and describes the behavior of Larceny.
>
> R6RS declares them to be errors but for technical reasons
> does not require implementations to raise these errors,
> it only encourages them to do so. To my knowledde,
> Larceny is the only implementation complying with
> the R6RS recommendation.
I'm confused. This example:
(let-syntax ((f (syntax-rules () ((_) 1))))
(let ()
(define (g) (f))
(define (f) 2)
(g)))
Does not error for me with Larceny 0.97b1. Was this checking added
more recently? And why would such a gratuitous incompatibility with
the R5RS be added? (I once again assert that the R5RS requires that
this returns 2, as the inner `define's are converted to a `letrec'.)
--
Brian Mastenbrook
[email protected]
http://brian.mastenbrook.net/
_______________________________________________
r6rs-discuss mailing list
[email protected]
http://lists.r6rs.org/cgi-bin/mailman/listinfo/r6rs-discuss