Q:

mutator methods with Fixnum and Symbol

In matz's book, Ruby Programming Language, he says the following:

We've said that all values in Ruby are objects and all objects are
  manipulated by reference. In the reference implementation, however,
  Fixnum and Symbol objects are actually "immediate values" rather than
  references. Neither of these classes have mutator methods, so Fixnum
  and Symbol objects are immutable...The only practical difference
  between immediate values and reference values is that immediate values
  cannot have singleton methods defined on them.

So I launch irb and test this claim.
class Symbol
  def self.mutator
    puts 'mutator method'
  end
end

Symbol.mutator
# => mutator method

I just defined a singleton method on Symbol, without errors. So what is he talking about?

A:

[...] immediate values cannot have singleton methods defined on them

Singleton method is one you define on an object of instance of class, not on class (object) itself, like in the example you've provided. 
Consider following code:
s = :sym

def s.my_method
  puts "HELLO"
end
# => TypeError: can't define singleton

When on other object, eg of string:
str = "string"

def str.my_method
  puts "HELLO"
end

str.my_method
# => HELLO

The second one is without any errors.
Hope that helps!
UPDATE - what are immediate values

Fixnum are objects that contain immediate values
What does it means? It means that if we write x = 5, the number 5 will
  be stored (encoded) directly into the variable x like if it was a
  primitive data type (with ruby traditional objects, x would have
  contained an address corresponding to the object stored in the heap).
  So, when we write x = 5, x knows everything it needs about the number
  5. In fact, x IS the object and not a reference to it.

reference
Let's consider an example:
fix1 = 2
fix2 = 2

fix1.object_id
# => 5

fix2.object_id
# => 5

But:
str1 = "test"
str2 = "test"

str1.object_id
# => 2157416420

str2.object_id
# => 2157531060

Fixnums of the same value have exactly the same object_id (the same applies to Symbol), but to Strings, even if they are of the similar value "test", they have different object_ids.
Because immediate values are immutable (are allocating the same place in memory), they can't be mutable.

