Gauche > Archives > 2026/04/02

2026/04/02 10:09:03 UTCleque
#
実装を見た感じ、SRFI-147の begin のdefinitionはlet-syntaxの外側に展開されるみたいですね
#
なのでこんな感じ'
#
(let-syntax ((dummy (begin
                      (define x 42)
                      (syntax-rules ()))))
  #f)
===
(let ()
  (define x 42)
  (let-syntax ((dummy (syntax-rules ())))
    #f))
#
beginの展開箇所: https://github.com/scheme-requests-for-implementation/srfi-147/blob/b70f863244c42f1c846fa4a0cb2752ff01508b02/srfi/147/implementation.scm#L34
#
let-syntaxの展開結果は(let () ...)に囲まれるので、上のdefineはグローバルにならないよう: https://github.com/scheme-requests-for-implementation/srfi-147/blob/b70f863244c42f1c846fa4a0cb2752ff01508b02/srfi/147/implementation.scm#L54
2026/04/02 13:36:15 UTCshiro
#
なるほどぅ。ふーむ、reference implementation動かしてみるか