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.