■
A dark, under-specified corner of R5RS: VCELL を使う限り 3 を出すのは無理だな…あるいは farsymbol が 2 cell 使うか。
気色悪い事したら 3 出せるね。
(define sym val)
Top-level define に渡される symbol についてる wrapper は高々 1 個 (のはず) なので、
(when (farsym? sym) (set-wrapped-symbol! sym (copy-symbol (farsym-wrapped-symbol sym))) (set-env-depth! sym invalid-depth))
として、unwrap-syntax のときに invalid-depth を検出して (intern (symbol->string 'sym)) したら多分動く。…意味ないからやりたくないけど。
Source 読んだ人しかわからん話でスマソ。
追記: 結局 4 出しますた。