Immutability has many virtues. It is nice to create an object, pass it
around to many functions, and know that it is still the same. Immutability
is very safe.

Mutability has many virtues. It is fast. People are used to it.

I think it is important to support both types. I think that people who like
immutability are ok with it being a bit slower. Right now the
Immutable->mutable->computation->mutable->Immutable process works well I
think. It would be better if, as Aaron suggests, we ensure that the
transition is very cheap.

There are many interesting discussions to be had however about defaults and
standards.

Despite being a fan of immutability in symbolic systems I think that we
should stick to having MutableMatrix the default. I think that many users
will want to do things like

M = eye(3)
M[2, 2] = 10

If we stop them from doing this I think that they will be confused.

The unevaluated by default discussion is separate. The next chance I get a
free 20 minutes I'll put up a pull request to change the behavior. I do
encourage discussion on the topic. In one of the issues someone did want an
unevaluated immutable matrix expression. This will still be possible but
you'll have to use explicit MatAdds/MatMuls.

To be clear on the original point. Even if we had a MutableBasic I still
think we should have an ImmutableMatrix. I do not think we should merge
Mutable and Immutable.

-- 
You received this message because you are subscribed to the Google Groups 
"sympy" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/sympy?hl=en.

Reply via email to