This page is part of the web mail archives of SRFI 75 from before July 7th, 2015. The new archives for SRFI 75 contain all messages, not just those from before July 7th, 2015.
felix winkelmann wrote:
On 7/19/05, Jens Axel Søgaard <jensaxel@xxxxxxxxxxxx> wrote:
Since some implementation do have uninterned symbols, it implies that it isn't great style to rely on the above.Well, I'm usually very careful with broad "isn't great style" generalisations. Uninterned symbols do in fact complicate the (IMHO rather handy) assumption that symbol->string and string->symbol 1:1 relationship. Gensyms are an implementation hack (used in 99% of all cases for "defmacro"-style macro programming). In fact, I'd rather see a "(genguid)" than a "(gensym)" :-).
Well, I didn't say it was bad style - just that it isn't great style ;-)
The problem is that I've seen numerous bodies of code (object-systems, macro-expanders, module systems, ...) that depend on some kind of "symbol-append" function and convert back and forth between symbols and strings. In these cases a 1:1 relationship is required as uninterned symbols may lead to unexpected things.
To me uninterned symbols isn't as much an "implementation hack" as a solution to a problem with the "symbol-append" approach. If you want to generate a unique symbol it is unsafe to rely on the symbol-append approach. It is possible to lower the probability of clashes by using strange names, but one can't really be sure. -- Jens Axel Søgaard