Apologies if that was already considered/discussed somewhere (the only thing I found was this old discussion).
Why not use the dot operator in types in a way that mirrors its usage in expressions? By that, I mean that B.A could be equivalent to A<B> and B.A<C,D,...> to A<B,C,D,...>.
This could get rid of a lot of pesky angle brackets, and it also reads very naturally IMHO. This is similar to OCaml’s generics, where int option list means List<Option<Int>>, or with the new syntax Int.Option.List or List<Int.Option>, read “a list of int options”.
Also compare:
HashMap<Vec<String>, Vec<Rc<Cell<i32>>>>
// and
HashMap<String.Vec, i32.Cell.Rc.Vec>
I did not see an incompatibility with the way operators are currently used (in that way it’s nice that :: is used for namespacing instead of .).
Any comments?