On 25/11/2010 03:46, Greg Ewing wrote:
On 25/11/10 12:38, average wrote:
Is immutability a general need that should have general solution?

Yes, I have sometimes thought this. Might be nice to have a "mutable" attribute that could be read and could be changed from True to False, though presumably not vice versa.
I don't think it really generalizes. Tuples are not just frozen
lists, for example -- they have a different internal structure
that's more efficient to create and access.

But couldn't they be presented to the Python programmer as a single type, with the implementation details hidden "under the hood"?
So
    MyList.__mutable__ = False
would have the same effect as the present
    MyList = tuple(MyList)
This would simplify some code that copes with either list(s) or tuple(s) as input data.
One would need syntax for (im)mutable literals, e.g.
[]i # immutable list (really a tuple). Bit of a shame that "i[]" doesn't work.
or
    []f    # frozen list (same thing)
    []     # mutable list (same as now)
    []m  # alternative syntax for mutable list
This would reduce the overloading on parentheses and avoid having to write a tuple of one item as (t,) which often trips up newbies. It woud also avoid one FAQ: Why does Python have separate list and tuple types? Also the syntax could be extended, e.g.
    {a,b,c}f      # frozen set with 3 objects
    {p:x,q:y}f  # frozen dictionary with 2 items
{:}f, {}f # (re the thread on set literals) frozen empty dictionary and frozen empty set!
Just some thoughts for Python 4.
Best wishes
Rob Cliffe
_______________________________________________
Python-Dev mailing list
Python-Dev@python.org
http://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com

Reply via email to