Implementing srfi-147 natively in Gauche, I stumbled on how to handle scope of 'begin'.
The answer is described in one of the ML exchanges:
>> In case of (define-syntax foo (...)), the definitions introduced by
>> (...) are in the same scope as the definition of foo itself.
>> In case of (let-syntax ((foo (...))) ...), the definitions introduced by
>> (...) are in a scope between the outer and the inner scope of
>> let-syntax. For example,
>> (let-syntax ((foo (begin (define-syntax bar lambda) bar))) ...)
>> is equivalent to
>> (let () (define-syntax bar lambda) (let-syntax ((foo bar)) ...)).
However, the final srfi doesn't include these explanations.
I assume the paragraph "Whenever a keyword is bound to ..." in the Syntax
section implies this scoping rule, but the example given in the above
email makes it a lot easier to grasp. Is it a too big change as an errata to
add these rules in the srfi document? It won't change the specification, and
it'll be beneficial for future readers, I suppose.