[EMAIL PROTECTED] wrote:
> The first line of that example has to be:
> 
> s = |set([1, 3, 5])|
> 
> But I don't know/remember why set() can't accept many values like
> max/min:
> 
> max([1,2,5])
> max((1,2,5))
> max(1,2,3)
> 
> Bye,
> bearophile
> 

How about just providing a freeze method on `object` (since everything 
will inherit from object) that can freeze the object?

In fact the freeze protocol could provide 2 methods: freeze and frozen, 
the former would freeze the object in place (e.g. freeze the object it's 
applied to) while the later would return a frozen copy of the object 
it's applied to.

That way, it could even be used as a const-like parameter to a function 
(with frozen)

Examples:
 >>> l = [0, 1, 2, 3]
 >>> l.append(5)
 >>> l
[0, 1, 2, 3, 5]
 >>> l.frozen()
[0, 1, 2, 3, 5]
 >>> fl = l.frozen()
 >>> l.append(7)
 >>> l
[0, 1, 2, 3, 5, 7]
 >>> fl.append(7)
Traceback (most recent call last):
...
WhateverError: frozen 'list' object cannot modified
 >>> fl
[0, 1, 2, 3, 5]
 >>> l.freeze()
 >>> l
[0, 1, 2, 3, 5, 7]
 >>> l.append(9)
Traceback (most recent call last):
...
WhateverError: frozen 'list' object cannot modified

One could even dream of a melt/molten method pair that'd behave at the 
opposite of the freeze/frozen pair (to have the ability to "unfreeze" an 
object if needed)

No new keyword, no new token, no new structure, no new builtin, same 
functionalities.
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to