Ruby objects are mutable in the sense that you can do the following:

a = []
a.add(1)

The internal state of 'a' has been changed, which is a no-no in
functional languages. Of course, most of them do so anyway for tasks
like I/O, and use some sort of abstraction (which often looks eerily
like an 'object') to hide those side-effects from the programmer.

Lennon