I'm torn on haxe. It has a few nice features (macros!) and has many, many targets. But on the other hand, its syntax and some of its semantics are Java/C++-inspired, whereas something closer to its ML roots would've been so much better. It might still beat Java for writing Android apps.
The types are based on JS without truthy or falsy values; comparison is required to get boolean values.
Like Coffeescript, while+iterators are used instead of C-style for loops. (no "do while" blocks either)
Case statements don't fall through.
These little changes(plus a few others) help bring in a lot of the enforced-cleanliness that you'd get with a bigger syntax change, it just "looks" curly-brace. One that I miss is :=, since I have run into the ==/= typo occasionally(it just occurs in much more limited situations). No-truthiness is particularly interesting since you only really notice it's there when you try to port C or JS code.