[plt-dev] symbol->string and mutability
At Wed, 17 Jun 2009 20:28:10 -0400, Carl Eastlund wrote:
> Why do symbol->string and keyword->string produce mutable strings? In
> so doing, they have to allocate a new string every time. Is there any
> way to get at an immutable string that is not allocated more than
> once? I would prefer that this be the default behavior; R6RS already
> specifies that symbol->string produces an immutable string, for
> instance.
Symbols and keywords are represented internally in UTF-8, while strings
are represented internally as UTF-32. So, there's not an obvious way to
have `symbol->string' avoid allocation, except by either caching a
string reference in the symbol (probably not worth the extra space,
since most symbols are never converted) or keeping a symbol-to-string
mapping in a hash table (which any programmer can do externally).
I think it would be a good idea to switch to an immutable-string
result, but considering potential incompatibility, it has never seemed
worthwhile in the short run.