http://d.puremagic.com/issues/show_bug.cgi?id=4375
Stewart Gordon <s...@iname.com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |s...@iname.com --- Comment #6 from Stewart Gordon <s...@iname.com> 2010-09-23 05:59:44 PDT --- (In reply to comment #1) > Except that then you have to make the compiler understand > indentation. ??? Defining the form if ( IfCondition ) if ( IfCondition ) ThenStatement else ElseStatement to be an error, rather than to be parsed in one of the two possible ways, doesn't require the compiler to understand indentation at all. > Requiring it to be able to understand indentation well enough to > alert the programmer as to where they used it incorrectly or to > complain that the programmer has used it in a manner which could be > ambiguous to a human reader would likely complicate things quite a > bit for the compiler. But if you design the language to be whitespace- and indent-sensitive in the first place, then it's easy. That's how Python has managed it. You need a different type of parser to read the language, but it isn't difficult. On the other hand, you can't add indent-sensitivity to a free-form language, unless you discard the free-form aspect and require line breaks in set places. But then it would be silly to require curly brackets and semicolons, which is why Python doesn't. This would be a huge breaking change for D were it to be implemented. > Also, it could be rather nasty to code generators, since then > they'd have to worry a lot more about making code human-readable - > which while potentially nice probably isn't necessary in many cases. ISTM code generators would likely put the {} in, because it's easier to program it to always put them in than to detect whether they're necessary. > I believe that the usual solution if a programmer is worried about > this sort of thing is just to use a coding standard that always > requires braces for the bodies of if-else statements, loops, etc. My personal style is to always use {} unless the whole IfStatement or similar fits on one line. Though I do use "else if" rather than else { if (...) { ... } } and I've been known to do things like else switch (...) { ... } -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------