Hi Jeremy, if you'll please pardon the the somewhat flame-y tone above -- and the Coffeescript language is 'done' so these subjects are mostly moot anyway -- my experience has suggested that:
- optional braces cause more ambiguity (manifesting as either strange parse error messages on the front side, or bugs on the back side) than is warranted by the need to write:
- newlines separating elements of a list is good, but it's really confusing to me why the following program would/should work with no comma after the "a":
foo = (a, b, c) -> console.log a, b, c
foo "b",
"a"
"r"
Plainly, it _does_ work, but to me it feels like using a hole in my sweater to scratch an itch on my elbow.
I don't know coffeescript, but I'd guess it's because the first comma indicates "this is an argument list," so the next few items get treated with list/array syntax rules where commas aren't required.
(Had this comment thread left open in my browser since Friday. Noticed no one replied so I figured "why not," even though I might be wrong :V)
Optional braces around object literals allow you to write lines like this:
... and having newlines separate elements in lists makes a ton of sense in a language where whitespace is significant: ... and also helps with the famous trailing-comma-in-IE error and comma-first controversy.If you're writing something that's convoluted enough that the features aren't helping you ... don't use 'em.