On Dec 11, 2007, at 9:08 PM, Yukihiro Matsumoto wrote: > !@ and ~@ are aliases to ! and ~ respectively. Since they are > aliases, :"!@" give the same symbol as :"!". So in trunk: irb> h = { :"!" => 1, :"!@" => 2} => {:"!"=>2} Breaking the one-to-one mapping between bytes in a string and the identity of a symbol breaks the entire symbol abstraction for me. Just because a Ruby method has two names doesn't mean that those two names are synonymous in general. Gary Wright