Re: feature/underscorep branch with provisional changes to handle _
Marc Nieper-WiÃkirchen 24 Aug 2020 15:57 UTC
Am Mo., 24. Aug. 2020 um 17:45 Uhr schrieb Felix Thibault
<xxxxxx@gmail.com>:
>
>
>
> On Mon, Aug 24, 2020 at 9:37 AM Marc Nieper-Wißkirchen <xxxxxx@nieper-wisskirchen.de> wrote:
>>
>> Thank you for the MWE.
>>
>> The problem is that the transformer environment (the lexical
>> environment in which the transformer procedure is expanded) is, in
>> general, different from the runtime environment. In "minimal.scm",
>> "underscore?" does not belong to the transformer environment (in R6RS
>> language: its binding lives in another phase).
>>
>> There are two solutions: You can use "eval-when", which is not
>> standardized, though, or you put "underscore?" in its own library. In
>> the latter case, the R6RS expander will visit that library in the
>> correct phase because it notices that "underscore?" is referenced
>> inside aa macro transformer.
>
>
> That worked once I put (define-auxiliary-keywords ..1 ..= ..* @) in the guards.scm module and exported them from there! But with Chez I still ran into the same problem where it complained about ..1 symbol syntax not being allowed under #!r6rs, so I guess this route won't work for anything but underscore.
In R6RS, "..1" is just invalid lexical syntax. So no matter what
contrived macros you program, the reader will never pass an identifier
with that symbolic name to you macro unless you write "\x2E.." or the
like.