What is immutable good for?
Immutable data, once initialized, is never changed. This has many uses: • Access to immutable data need not be synchronized when multiple threads read it. • Data races, tearing, sequential consistency, and cache consistency are all non-issues when working with immutable data. • Pure functions can only accept immutable parameters. • When doing a deep copy of a data structure, the immutable portions need not be copied. • Invariance allows a large chunk of data to be treated as a value type even if it is passed around by reference (strings are the most common case of this). • Immutable type provides more self-documenting information to the programmer. • Immutable data can be placed in hardware protected read-only memory, or even in ROMs. • If immutable data does change, it is a sure sign of a memory corruption bug, and it is possible to automatically check for such data integrity. • Immutable types provide for many program optimization opportunities. const acts as a bridge between the mut