In my eyes, one of the most important use of type-signatures-for-everything (apart from a welcome uniformity), is the will to deprecate `*` in favour of `Type`. That is because, in practice, I always use `*` in CUSKS (of which I use a lot!), as with `Type`, they would become immensely crowded and, to me at least, barely readable. In short: to me type-signatures-for-everything is the one blocker for deprecating `*`.
So let's look at this proposal through the lens of this use-case:
- Associated type declaration are already kind of type signature assignments.
- Except only partial, as some of the variables will be to the left of the type families
- But these extra variables are already mentioned in the type class, where their type can be specified. In particular by a kind signature!
So do I need to write `(Type -> Type) -> Type` near a type variable? No, I don't.
I guess I'm in favour, then.