"-Share data liberally by reference all over your code.
-Try not to make functions side-effecting"
Aren't those 2 points contradictory?
Now, that means that the language is not forcing you to share without mutability, because you can leave off "const". That is, you have to be disciplined. But if you put "const" on the reference, the compiler won't permit you to modify the data through that reference.