Mark H Weaver <m...@netris.org> skribis: > I've considered this idea in the past, but it only avoids collisions > with symbols that have been interned before the gensym. It does not > avoid collisions with symbols interned *after* the gensym. Obviously, > there's no way to avoid such collisions.
Yeah, good point. > 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}# (This is already the case when called with no arguments.) > 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. Thanks, Ludo’.