Andy Wingo <[email protected]> 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