[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Scheme-reports] Fwd: Re: file inclusion (section 4.1.7 of draft 9)
- To: scheme-reports@x
- Subject: [Scheme-reports] Fwd: Re: file inclusion (section 4.1.7 of draft 9)
- From: Daniel Villeneuve <dvilleneuve@x>
- Date: Sat, 08 Jun 2013 12:16:05 -0400
- In-reply-to: <51B2A8E1.email@example.com>
- References: <51B2A8E1.firstname.lastname@example.org>
Reposting with the correct "from" address...
Essentially the same idea that was expressed by Takashi Kato.
On 07/06/13 11:38 PM, John Cowan wrote:
> Daniel Villeneuve scripsit:
>> (define-syntax m
>> (syntax-rules ()
>> ((_) (lambda (a) (include "some/file.sch")))))
>> where the file "some/file.sch" contains, say,
>> (+ a 1)
>> Is the symbol `a' in "some/file.sch" supposed to match the
>> lambda's argument?
> Yes, I believe so: files are included at the S-expression level,
> not hygienically.
Well, in an explicit-renaming macro system, my understanding is that I would get the following expansions (with  on the right denoting the environment produced by the explicit-renaming system as macro expansion is performed):
(lambda.0 (a.0) (include.0 "some/file.sch")) [lambda.0 => lambda, a.0 => free, include.0 => include]
(begin (+ a 1)) [lambda.0 => lambda, a.0 => arg0, include.0 => include]
and at this point, a plain `a' is not found in the environment as arg0.
If the above is correct, I would say that non-hygienic file inclusion makes the `a' in the included file not match the `a' bound in the macro (possibly generating an error, or a reference to another binding of `a').
Is this really the intent?
Scheme-reports mailing list