Logan Capaldo ha scritto:

> For  the most part if it makes sense that something should be mutable, 
> it is. I don't think that mutability is ever determined on the basis of 
> performance ( except for maybe symbols)

Having some object immutable allows some optimization otherwise not 
possible. On the other hand makes some algorithms *slow*.

The typical case is concatenating a lot of strings. In python it is 
terribly unefficient, it's better to use StringIO objects (kind of file 
in memory) or joining arrays.

However, I think the real reason is:
in Python dictionary (hash) keys are supposed to be immutable (again, 
for performance reasons, I've been told). Since hashes that could not 
use strings as keys would be quite useless, strings are immutable.

ObjectiveC has both mutable and unmutable. But since in Python "there 
should be only one way to do it", strings are just unmutable.

But not to go too off-topic...

I noticed that strings are mutable in ruby since << adds to existing 
string. But I found out sometimes += creates a new string objetc...