Currently existential types and higher kinded types share similar syntaxes, and sometimes it confuses some people:
// This function call has an existential type as a type parameter
weakTypeOf[Cond[_]]
// This function declaration has a higher kinded type parameter
def weakTypeOf1[Cond[_]]: Type = ???
What we should do next? There are two options:
- Change the wildcard keyword from
_
to?
, and leave the higher kinded type syntax unchanged ( https://github.com/lampepfl/dotty/issues/2041) - Change the style guideline for higher kinded types from
_
to*
(https://github.com/scala/docs.scala-lang/pull/950), and leave the wildcard keyword unchanged.
Which one do you prefer? Why? Do you have other solutions?