> To my knowledge there's no programmatic access to the underlying > symbol > table in Ruby. (Am I wrong about this? Have I missed all the > table-manipulating fun? :-) When you define an instance method you are adding an entry to the method table for the class. The key for this table is a symbol so you might be implicitly adding an entry into the internal table of all symbols (maintained by the Symbol class). When you call method("puts") or send("puts") you are looking up an entry in the method table. When you call remove_method("puts") you are deleting the entry in the method table. Same situation for constants (which implicitly means Modules and Classes). This is what I meant by symbol table. > Again, I think that from the programmer's perspective, you can map > from > strings to methods just as easily: > > attr_reader :a > attr_reader "a" > attr_reader :a.to_s > attr_reader "a".to_sym Yes, it is this mapping from strings/symbols to methods that is novel for many programmers. I think it is the novelty of this built-in mapping ability that gets confused with the abstract-data-type aspect of Symbols.