>> I do not see why matrix.row(0) should return a *copy* of the row when >> the matrix is immutable. > > > It depends on the implementation.
I agree, and that was my point. As you say, under different circumstances (different implementation of matrices) we may have chosen to return 'views' on the rows of an immutable matrix instead. I am not proposing to do this in Sage: this would indeed require a heavy amount of changes. What I wanted to show is that there is nothing in the semantics of matrix.row(i) that says that it is necessarily a copy. In different software people did it differently, and that is fine too. Thus, I claim that nothing in the semantics of .row( i ) hints at a copy (especially for immutable matrices), and thus I do not believe that .row() should follow the behaviour of copy(a_matrix). In particular, I still believe that the behaviour of our objects should be [1]: - immutable+immutable = immutable - immutable*immutable = immutable - immutable_matrix.row( i ) is an immutable vector. As two examples showed, we have to get out of our way to set "back" to immutable objects which we expect to be from the start. Otherwise it is indeed very (very) hard to work with sets of immutable objects. Nathann [1] As it is the case in Python, as illustrated above with tuples. -- You received this message because you are subscribed to the Google Groups "sage-devel" group. To unsubscribe from this group and stop receiving emails from it, send an email to sage-devel+unsubscr...@googlegroups.com. To post to this group, send email to sage-devel@googlegroups.com. Visit this group at http://groups.google.com/group/sage-devel. For more options, visit https://groups.google.com/d/optout.