On Saturday, February 9, 2013 10:50:25 PM UTC-6, Chris Angelico wrote:
> [...]
> I don't understand. Wouldn't freezing an array (list) result in a
> tuple? And, why should there be no literal syntax for them?
> 
> Having a convenient literal notation for every basic type is extremely
> handy. 

Actually i must admit that you are correct. Of course the problem with literal 
syntax is symbol congestion. But i have a solution. A solution that can survive 
the limited number of grouping chars that python employs now. Except, i will 
define them explicitly

{}: denotes ANY mapping object.
[]: denotes ANY mutable sequence object.
(): denotes ANY immutable sequence object.
<>: Hmm, there must be a good use for this one!

The key to removing complexity is to declare the literal syntax much the way 
Python "represents" a "set". Observe:

py> set([1,2,3])
set([1,2,3])

Using this syntax we can apply "grouping" chars in proper context when writing 
literal syntax. The only problem is how do we make this syntax unique enough to 
avoid confusion and complexity???  Some hypothetical literal syntax, 
"syntaxes", include:

<set>[1,2,3] # Set literal
<set>(1,2,3) # FrozenSet literal

set=>[1,2,3] # Set literal
set=>(1,2,3) # FrozenSet literal

set::[1,2,3] # Set literal
set::(1,2,3) # FrozenSet literal

set<[1,2,3]> # Set literal
set<(1,2,3)> # FrozenSet literal

<set[1,2,3]> # Set literal
<set(1,2,3)> # FrozenSet literal

set([1,2,3]) # Set literal
set((1,2,3)) # FrozenSet literal


...and to avoid conflicts with the "set" function, we just remove the set 
function! Only the types list, dict, and tuple(bka:StaticList!) should have a 
built-in constructor function, the remaining should have a typical OOP style 
constructor:

mySet = Set([1,2,3])
mySetLiteral = set([1,2,3])

-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to