Andy Wingo <wi...@pobox.com> writes: > (define-syntax-rule (define-const x val) > (begin > (define t val) > (define-syntax x (identifier-syntax t)))) > > Here, `t' will have a fresh mark. > > Now, if in one compilation unit, I do: > > (define-const x 10) > > And in another, I do: > > (let ((t 20)) > x) => ? > > You would expect the result to be 20. But I think it could be 20, if > the marks on the two "t"s happened to collide.
Ah yes, indeed you are right. Thanks for this explanation. I guess we need universally-unique gensyms for marks at least, regardless of which `local-eval' implementation we use. Thanks, Mark