On 4/13/07, Kyle Schalm <[EMAIL PROTECTED]> wrote: > >> while i'm on the topic of sets, is the Set class intended to be immutable? > > > > No. The builtin Python set type isn't immutable, so it doesn't > > seem sensible to make the SAGE one immutable. E.g., the > > builtin set type has an add method: > > ok, but there is no add method in the SAGE Set, nor is there a remove > method. so as it stand right now, it isn't very similar to a python set.
There should be a remove and add method. I forgot to implement them. > > Sets in SAGE should have very similar behavior to Python sets, > > except "be more mathematical", and of course allow for infinite > > sets. Thus actually, regarding your previous patch, sets shouldn't > > be allowed as dictionary keys and shouldn't have a hash method > > at all, or have one that raises type error. If you want to use one > > as a key, you should maybe be using a tuple instead. > > if Sets aren't going to be usable as dictionary keys, then i'm going to > create a new immutable set class that can, because i really need that. > tuples won't cut it. I totally understand. Immutable types are really useful in practice. > > I would not be opposed to creating an immutability flag > > for sets, and having a "set_immutable" option (like with > > Sequences), to create immutable sets. But those shouldn't > > be the default. > > you mean something like > > s = Set([1,2,3],immutable=True) > > ? that would work for me. Yes, exactly. Also, s = Set([1,2,3]) then s.set_immutable() Definitely look at the Sequence code in structure/sequence.py before implementing the above though. > in any case, i think the following behaviour > > >> > >> In [58]: x=[1,2,3] > >> > >> In [59]: s=Set(x) > >> > >> In [60]: x[1]=5 > >> > >> In [61]: s > >> Out[61]: {1, 3, 5} > > > is still highly undesirable. I agree. Removing setitem, as I think you did, is a good idea. The python builtin set doesn't have it. > shall i go ahead and add the immutable option, and some add and remove > methods? Yes. Thanks! William --~--~---------~--~----~------------~-------~--~----~ 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/sage-devel URLs: http://sage.scipy.org/sage/ and http://modular.math.washington.edu/sage/ -~----------~----~----~----~------~----~------~--~---