Hacker News new | past | comments | ask | show | jobs | submit login

The language offers features so that you can use them well. Any bit of syntax can be abused. `))))))`, for example ;)

Optional braces around object literals allow you to write lines like this:

    rectangle x: 10, y: 15, width: 500, height: 500
... and having newlines separate elements in lists makes a ton of sense in a language where whitespace is significant:

    requires = [
      "jquery"
      "underscore"
      "d3"
    ]
... 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.




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:

    rectangle { x: 10, y: 15, width: 500, height: 500 }
- 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)




Join us for AI Startup School this June 16-17 in San Francisco!

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: