I find JS a thoroughly unpleasant language to work with. When will we reach the point where JS could be abstracted away entirely? (Just like how I never need to interact with assembly language any more.)
1. JS as an assembly language. This is what emscripten[0], a LLVM bytecode-to-JS does, by following the asm.js specification[1]. This is for CPU-intensive tasks, not DOM manipulation. You can use any language that has a LLVM frontend.
2. JS as a target language, from a specific, new language. Those include cleaner variants that keep the same semantics (CoffeeScript, TypeScript, maybe Dart, ...) or more innovative ones, such as Elm[2], which is written in Haskell too. I'd say that a big innovation that makes the life easier is FRP (which is at the heart of Elm or React.js).
I fail yet to see what advantages PureScript brings compared to Elm.
> I fail yet to see what advantages PureScript brings compared to Elm.
I think they fit different use cases. Elm is excellent at interactive web apps using FRP. PureScript is a little more general purpose and has a few type system features which Elm currently does not (type classes and rank N polymorphism). Also, PureScript's generated code is a bit simpler and doesn't need a runtime library.
Not speaking for the parent, CoffeeScript is even worse than Javascript. The killer for me is indentation forming scope. If you accidentally indent your code incorrectly, like when you're copy/pasting from one file to another, you can change the scope of all of the variables within.
The other major problem I have with it is that it encourages us to go back to the class-based patterns that we've been trying to get away from.
Please. Coffee has its problems, but being white-space sensitive is not one of them. It's entirely a matter of personal preference, just like preferring {...} instead of begin...end or using '' instead of "" for strings; it's not even as significant as prefix vs. infix syntax, which does have some practical consequences. You get indentation based blocks in quite a lot of languages, Haskell, F#, Python, Nimrod, MoonScript and others and it works there, I see no reason (knowing them all) for it to be a problem in Coffee particular case (to be honest, Coffee allowing inconsistent indentation in a single file is a bad design decision, though).
Though you should always be careful when copy/pasting code.
I'm not sure how it encourages classes, I personally didn't even use classes at all for the first long period of my CoffeeScript life. And now only do sparingly.