[Python-ideas] Making colons optional?

Riobard Zhan yaogzhan at gmail.com
Mon Feb 9 03:36:07 CET 2009


On 8-Feb-09, at 2:18 PM, Bruce Leban wrote:
> Your statement that no programming language used trailing colons is 
> simply false. I and many others have said that colons and semicolons 
> have completely different semantics as well and you have chosen to 
> ignore that.

I apologize for the imprecise statement. It would be more precise if I 
say Python is one of the very, very few languages that require 
trailing colons. In either case, Smalltalk's colons are completely 
different animals (they signify keywords, which are used to build 
control constructs via message passing) than Python, and it makes no 
sense to compare the two. And Smalltalk is not as widespread as many 
other "mainstream" languages; therefore it is rather an exception for 
Python to require trailing colons (but not so to require commas). That 
is the difference between making colons optional and making commas 
optional; that is also why I think your generalization to commas will 
not work.
I fully understand your view that semicolons and colons are somehow 
different in semantic. It is just that you and many others have chosen 
to ignore the fact that different semantics do not necessarily imply 
different rules, otherwise we will have too many rules to worry about. 
In this case, I do not think the difference between their semantics is 
huge enough to treat them differently.
> Clearly the use of the specific semicolon character is confusing 
> you. So let's replace it with a better symbol: \n as in this example:
>> for i in x: foo(i) \n bar(i+1)
>> Sure a \n is optional at the end of any line because a blank line is 
> always allowed. So what?
>> What's the point you are trying to make?
>> The point is that the \n token and the : token have different 
> semantics entirely. The \n token is used to separate statements on a 
> single line. You seem to think that they are related because they 
> look similar and now they don't.
>> One more final point: in some languages, the semicolon is a 
> statement TERMINATOR as it is in C and in others it is a statement 
> SEPARATOR as it is in Pascal. I think your time would be better 
> served by working to convince the Pascal people and the C people to 
> reconcile that inconsistency than this discussion.

I think you misunderstood my point of relating semicolons and colons. 
My point is that colons are not so much different than semicolons as 
visual indicators that they deserve a different rule than semicolons 
(with one being mandatory while the other optional), because we 
already have indentation as a very effective visual indicator to tell 
us everything we need to be told. 


More information about the Python-ideas mailing list

AltStyle によって変換されたページ (->オリジナル) /