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

Reply via email to