Am Di., 1. Sept. 2020 um 09:18 Uhr schrieb Alex Shinn <xxxxxx@gmail.com>:
>
> On Tue, Sep 1, 2020 at 3:52 PM Marc Nieper-Wißkirchen <xxxxxx@nieper-wisskirchen.de> wrote:
>>
>> Am Mo., 31. Aug. 2020 um 23:15 Uhr schrieb Alex Shinn <xxxxxx@gmail.com>
>> >
>> > We can, because <literal> also has a precise definition in the formal syntax:
>> >
>> > <literal> -> <quotation> | <self-evaluating>
>> > <quotation> -> ’<datum> | (quote <datum>)
>>
>> No, you can't in any sensible way (see my detailed argument in the
>> previous post).
>>
>> Given the program
>>
>> (import (scheme base) (scheme write))
>> (define-syntax print
>> (syntax-rules ()
>> ((print a) (begin (write a) (newline)))))
>> (print "Hello, World!")
>>
>> by your reading, "Hello, World!" is not a literal because by following
>> the production rules without taking macro expansion into account, you
>> will never get to the production rule of <literal>. You will end up
>> with <macro use> and be stuck there.
>
>
> The restriction and the entirety of section 7.1 refer to the _lexical_ structure
> of the program, well before macro expansion.
So, "Hello, World!" is not a literal in my above program in sense of
your reading?
Of course it is, it's self-evaluating.
--
Alex