l...@gnu.org (Ludovic Courtès) writes: > Mark H Weaver <m...@netris.org> skribis: > >> If we cannot eliminate the possibility of collisions, and we cannot >> avoid intentional collisions, what can we do? I think the best we can >> hope for is to significantly reduce the probability of _unintentional_ >> collisions, perhaps by starting the gensym counter at a large number. > > I’m not sure if that would help. > > One thing that could help avoid unintentional collisions is to > automatically add whitespace before the number, such that: > > (gensym "x") => #{x 123}#
I think this is a good idea. >> The other thing we can do is to clearly document these inherent problems >> with gensym, so that they will not be misused for jobs for which they >> are not appropriate. > > I think we should add a sentence to that effect in the manual. It turns out the manual already has the following text in the ‘gensym’ entry, which I think is sufficient. The symbols generated by ‘gensym’ are _likely_ to be unique, since their names begin with a space and it is only otherwise possible to generate such symbols if a programmer goes out of their way to do so. Uniqueness can be guaranteed by instead using uninterned symbols (*noteSymbol Uninterned::), though they can’t be usefully written out and read back in. What do you think? Mark