Mark H Weaver <m...@netris.org> writes:

> Andy Wingo <wi...@pobox.com> writes:
>
>> On Tue 24 Jan 2012 15:01, Mark H Weaver <m...@netris.org> writes:
>>
>>> `local-eval' combines syntax objects from two different sessions into a
>>> single syntax object (in the wrapper procedure), and thus there may be
>>> label name collisions.  Now, if this combined syntax object is
>>> serialized as a compiled procedure, these labels with the same name will
>>> be optimized together into the same string object!
>>
>> A very good point!
>>
>> Cf. Aziz's psyntax/expander.ss from r6rs-libraries.dev:
>>
>>   ;;; (two marks must be eq?-comparable, so we use a string
>>   ;;; of one char (this assumes that strings are mutable)).
>>   
>>   ;;; gen-mark generates a new unique mark
>>   (define (gen-mark) ;;; faster
>>     (string #\m))

Dingdingding.  That sounds to me like I am not the only person of the
opinion that (eq? (string) (string)) is a standard-compliant
implementation choice.  I know this was a different discussion
altogether but thought it might be worth pointing out.

-- 
David Kastrup


Reply via email to