Ruby implementation of the Symbol ADT
Ruby implementation of the Symbol ADT, as mentioned, hinges on making Symbol class instances immutable that corresponds to the relative lack of operations in Symbol ADT. Symbol values are stored in Ruby interpreter's symbol table that guarantees that they can't be changed. This also guarantees that only a single Symbol instance would exist corresponding to any sequence of characters which is a significant characteristic of the Ruby Symbol class that isn't required by the Symbol ADT, and distinguishes it from String class.