Ruby 2.0: Symbol uniqueness?

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

This may be a question for the Ruby Core list?

···

On 5/5/06, MenTaLguY <mental@rydia.net> wrote:

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

MenTaLguY <mental@rydia.net> 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

···

-mental

--
Christian Neukirchen <chneukirchen@gmail.com> http://chneukirchen.org

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

···

On 5/5/06, MenTaLguY <mental@rydia.net> wrote:

--

Shad Sterling
me@shadsterling.com
http://shadsterling.com