On Wed 25 Jan 2012 01:26, Mark H Weaver <m...@netris.org> writes: > 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.
FWIW I think this example wasn't quite right; you'd need to have the case where both "t"s that are visible have marks. Like in compilation unit B: (let () (define-const y 20) x) => ? Cheers, Andy -- http://wingolog.org/