5 ms·
I'd rather have significant semi-colons than significant whitespace[1]. Don't mix presentation and semantics. 1: http://c2.com/cgi/wiki?SyntacticallySignifican
by Dobbs 14y ago
I'd rather have significant semi-colons than significant whitespace[1]. Don't mix presentation and semantics.
1: http://c2.com/cgi/wiki?SyntacticallySignificantWhitespaceConsideredHarmful http://c2.com/cgi/wiki?SyntacticallySignificantWhitespaceCon...
- lucian1900 14y agoJust like Python, Haskell only ever has significant indentation.
- eridius 14y agoUntrue. While it's true that most people use the 'layout' rule, which is the significant whitespace, there is a non-whitespace-significant variant that uses braces and semicolons. You can see an example of how layout is expanded to the alternative syntax at http://www.haskell.org/onlinereport/lexemes.html#lexemes-layout http://www.haskell.org/onlinereport/lexemes.html#lexemes-lay...
- lucian1900 14y agoNo, I meant that Haskell doesn't consider any whitespace that isn't indentation as significant.
- eridius 14y agoVery few languages consider non-indentation whitespace as significant (not counting using whitespace as a token delimiter, which Haskell definitely does, e.g. "foo bar" =/= "foobar").
- lucian1900 14y agoYes, but many people assume whitespace everywhere will matter when they hear Python's offside rule described. It's a misconception I've found is worth dispelling, since almost no one minds meaningful indentation.
- the_mitsuhiko 14y agoRuby and CoffeeScript do and their syntax relies heavily on it.
- vidarh 14y agoFor Ruby at least "heavily" is a big exaggeration. It is significant as a token separator and in cases where inserting a line break makes the expression up to the line break a valid expression in itself, in which case it is treated as one. You pretty much only need to remember to separate tokens where lack of whitespace might create a different vald token, and ensure any expressions that you want to let span more than one line ends with something that expects following tokens to make a complete expression. Personally I can live with that easily. I can not live with significant indentation, on the other hand...
- the_mitsuhiko 14y ago`foo()` and `foo ()` are different things in ruby, so are `foo[x]` and `foo [x]`. That is significant whitespace.
- orlandu63 14y agoI'd rather have the ability to choose between and freely mix significant whitespace and significant semi-colons within a single source file.
- lmm 14y agoNo you wouldn't. See Javascript for all the pain that causes. Language syntax needs to be dictatorial so that the language is consistent for reading (which is more important than writing).
- joeyespo 14y agoJavaScript's problem isn't that you can choose whether or not to use semicolons, it's that they're automatically put in for you if you omit them. http://lucumr.pocoo.org/2011/2/6/automatic-semicolon-insertion/ http://lucumr.pocoo.org/2011/2/6/automatic-semicolon-inserti... Technically, Python is a much better example of optional semicolons since you can use them and they're not required. Of course, the real reason they exist is for compound statements. http://stackoverflow.com/questions/8236380/why-is-semicolon-allowed-in-this-python-snippet http://stackoverflow.com/questions/8236380/why-is-semicolon-...