Ruby 2.0: Symbol uniqueness?


#1

I just learned yesterday that different string values can intern to the
same symbols; for example:

p “!”.intern == “!@”.intern # => true
p “-(unary)”.intern == “-@”.intern # => true

There aren’t many such cases, but it makes life awkward if you’re
writing code where two such strings are valid input (e.g. “!” and “!@”
are both valid, if unusual, identifiers in Scheme s-expressions).

This seems to be a side-effect of the current implementation of unary
operators in Ruby 1.x – is it slated for change in Ruby 2.0?

I think it’d be nice if Ruby symbols were guaranteed to uniquely
represent string values, and x.intern.to_s == x were an invariant for
non-empty strings.

-mental


#2

This may be a question for the Ruby Core list?


#3

MenTaLguY removed_email_address@domain.invalid writes:

I think it’d be nice if Ruby symbols were guaranteed to uniquely
represent string values, and x.intern.to_s == x were an invariant
for non-empty strings.

+1


#4

On 5/5/06, MenTaLguY removed_email_address@domain.invalid wrote:

I think it’d be nice if Ruby symbols were guaranteed to uniquely represent
string values, and x.intern.to_s == x were an invariant for non-empty
strings.

+1

-mental

Shad Sterling
removed_email_address@domain.invalid
http://shadsterling.com