Sam Kong asked: > One more think to clear up. > > f.send(:foo) #<- is :foo a symbol like an instance of Symbol or just a > generic symbol? > If :foo is not an instance of Symbol, then ':' is used for 2 kinds of > things in Ruby, right? :foo is an instance of Symbol % irb irb(main):001:0> :foo.is_a? Symbol => true The colon (:) prefix is Ruby for a literal Symbol, just like surrounding something in quotes (" or ') gives a String, or slashes (/) gives a Regexp. You can of course assign it to a variable like any other object: x = :foo f.send(x) A "symbol" in context of the parser, like from your Pickaxe quote, has nothing to do with programming Ruby, it's just used to denote a name or identifier. See how the passage you quote starts: "When Ruby sees a name such as a in an expression" - it's just talking about a word in your code that looks like a variable name or a method name. HTH, Dave