On Monday, February 11, 2013 7:35:23 AM UTC-6, Chris Angelico wrote:
> On Tue, Feb 12, 2013 at 12:13 AM, Rick Johnson wrote:
> > I am vehemently against using more than one "opening seq char" and one 
> > "closing seq char". ... we could use start and end tags like:
> >
> >   set{1,2,3}set
> >
> > where "set{" and "}set" are delimiters.
> 
> Interesting. So what you're actually against is the symbols. 

Nothing really. Chars are innocent creatures. They themselves know not of evil. 
However groups of chars have the capacity to collectively emit evil in the form 
of density, of which who's demon spawn is "incomprehensibility"!

> Okay. I
> have a bit of a Scheme (rubs hands together with glee) for you. 
> [snip lisping]
> 
> (set 1 2 3)
> (dict 1 2 3 4)   ; implicitly pairs up the arguments
> (tuple 1 2)
> (list 1 2 3 4)    ; This seems like a real good idea.

Well i must admit that this syntax would be beautifully consistent--except for 
the dict which is far too implicit! I would gravitate to something more like:

(dict 'a':1 'b':2 'name':'fred')

But what happens when we start nesting?

(dict: 
'employees':
    (list 
    'sarah:(dict 
        'age':22,
        'position:'CSR'),
    'john':(dict 
        'age':46,
        'position':'grounds'),
    'albert':(dict 
        'age':85,
        'position':'CEO'),
    ), # end list
'key1':(tuple 1,2,10.1),
'key2':(set 10,20,30),
) # end dict

As opposed to:

{
'employees':[
    'sarah:{
        'age':22,
        'position:'CSR'},
    'john':{
        'age':46,
        'position':'grounds'},
    'albert':{
        'age':85,
        'position':'CEO'},
    ],
'key1':(1,2,10.1),
'key2':set([10,20,30]),
}

But then again, literals are code smell anyway!

  http://en.wikipedia.org/wiki/Code_smell
  
I use literals like anyone else, but i sometimes wonder if i could live without 
them (probably not string literals though!!!). Many of us can even remember a 
day (before we learned about recursion) when we would write out gobs and gobs 
of unnecessary literals that could easily be built with a for loop. I think 
_most_ literals could just as easily be replicated in code. Consider this 
alternative approach to building the the dict above:

database = d = {}
d['sarah'] = k = {}
k['age'] = 22
k['position'] = 'CSR'
d['john'] = k = {}
k['age'] = 46
k['position'] = 'grounds'
d['albert'] = k = {}
k['age'] = 85
k['position'] = 'CEO'
d['key1'] = (1,2,10.1)
d['key2'] = [10,20,30]

Not as structured as the literal, but by utilizing indention the message will 
become clearer. Oh, yeah, better make sure we built that structure correctly!

py> import pprint
py> pprint.pprint(d)
{'albert': {'age': 85, 'position': 'CEO'},
 'john': {'age': 46, 'position': 'grounds'},
 'key1': (1, 2, 10.1),
 'key2': [10, 20, 30],
 'sarah': {'age': 22, 'position': 'CSR'}}

But then the old "for x in LITERAL_SEQ" and the "if this in LITERAL_SEQ" will 
bite you. Damn literals! Can't live with them, can't live without them.
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to