Oh yes, if we had named type parameters, then we’d need better names such as:
struct HashMap<Key, Value, BHasher = RandomState, Alloc = Heap> { .. }
We will need to do this with most of the standard library.
I think the problem of bad naming is that many programmers don’t like to name things (myself included) and are lazy about such things. This is difficult to change but could be improved with linting perhaps based on parameter ident length?
Your comment also sparked a thought: Since named type parameters become part of the public API and can’t be changed after, perhaps there needs to be some way of opting into naming (or opting out)? - otherwise, named type parameters can become a large source of breakage.