Re: Are the splicing versions a drop-in replacement for the non-splicing ones? Lassi Kortela (26 May 2020 13:43 UTC)

Re: Are the splicing versions a drop-in replacement for the non-splicing ones? Lassi Kortela 26 May 2020 13:43 UTC

> (let ()
>    (define foo 1)
>    (define bar foo)
>    (let-syntax ()
>      (define foo bar)
>      foo))
>
> evaluates to 1, but would be an error if let-syntax is replaced by its
> splicing version.

Is that because `foo` would then be defined twice in the same scope, and
would that be undefined behavior according to R7RS?

Whereas R7RS `let-syntax` establishes a new scope where the inner `foo`
is defined so there is never a conflict with the outer `foo`?