I've been following this for a while.
>>4
Explicit self types are used to control how self is referenced. That's not even relevant in Python is it?
>>5
That was the best call anyone has ever made in a language revision, I am certain of it.
>>6
The committee is wielding machetes. More has been removed than added since I've started following it and these people are disgustingly smart about what they're doing.
>>7
As mentioned previously, see Perl 6.
>>13
It's not very C-like. You could write it that way... but you won't.
On the other hand, it feels like what I wanted and never got out of C++: methods and parametrics are done in a way that doesn't compromise the simplicity that precedes them (structs, functions.) Even enums are exactly like C's (when they're not too busy getting algebraic on your ass, that is.)
>>15
You're talking about Go. No really, Go embraces it.
>>18
The sigils are needed to annotate the pointer types.
Braces and parens are disgusting to me (excepting S-exprs), I'd rather they used a syntax like OCaml's -> less parens than Python, virtually no braces or brackets, no significant whitespace yet reads just as well:
let mk_appender app = fun x -> x ^ app;;
let main =
let shout = mk_appender "!" in
print_endline (shout "hey ho, let's go");;
let () = main;;
That's the transliterated OCaml version. Haskell's $ may be available (if you've added it to the preprocessor) which could be used to eliminate the grouping parens. () at the end is the symbol for unit, like in Rust.
I'd be very happy to see this kind of syntax. Sadly Rust's inference isn't this good, and you'd have to put type annotations all over the place in addition to the referency stuff. It would look almost the same, but with fewer parens and no braces.
They lifted a lot from OCaml, but the syntax went through a filter and the semantics did as well in some spots.