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
?, and leave the higher kinded type syntax unchanged ( https://github.com/lampepfl/dotty/issues/2041)
- Change the style guideline for higher kinded types from
*(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?