Corner case 地獄その1

思わず↑「その1」とか書いてしまうあたりがもうorz

Macro の template 内で束縛されて改名された識別子を一旦 vector を通して submacro に渡してみる:

(let ((x 'outside))
                 (let-syntax
                     ((foo (syntax-rules ()
                             ((_) (let ((x 'inside))
                                    (let-syntax
                                        ((bar (syntax-rules ()
                                                ((_ #(arg)) arg))))
                                      (bar #(x))))))))
                   (foo)))
Gauche --> inside
Guile --> inside
Scheme48 --> error (mismatch)

これは Scheme48 の不具合…? よな?