Hacker News new | ask | show | jobs
by wvenable 6066 days ago
Yes, and Scala doesn't have the same problems as JavaScript. There's nothing wrong with having a language where semicolons are optional (as I already said). But in JavaScript, semicolons aren't optional in the same sense as Scala. They're essentially required but the interpreter "helpfully" inserts them for you if you "miss one" and potentially changes the meaning of your program. That's a huge difference.

I actually agree with your statement "I consider an interpreter that can figure things out on your behalf to be a more intelligent interpreter" -- I'm not arguing against smart interpreters. I'm merely arguing against semicolon insertion which is actually an incredibly dumb way of handling this situation.

1 comments

Fair enough. I just fail to see the distinction between "semicolon insertion" and optional semicolons. Sounds to me like semicolon insertion is just a stupid way to implement an interpreter where semicolons are optional -- something that can be changed without affecting client code
A language has to be designed around optional line terminators -- you just can't take a language like JavaScript or C and remove the semicolons, they convey meaning to the program. Something like Scala doesn't have the ambiguity that a C or JavaScript program has without line terminators.

So semicolon insertion is just a hack that happens before parsing. It's not that the semicolons are optional, they aren't, but it puts them in automatically according to a set of rules. Unfortunately that means you can't just put a return on a line by itself -- a semicolon will always be inserted.