Iām getting inconsistent results but from what Iām seeing type inference got way better. If it can figure out the types it will pick one even if there are multiple implicits in scope. Only if it canāt it tells me that they are ambiguous. For instance this
val option: Option[Int] = 1.pure
works even if both the Applicative[Id] and the Applicative[Option] are in scope but the following obviously tells me that it doesnāt know which one to pick:
Perhaps if there were something like _ (like in list.reduce(_ + _)), but for types, that we could use to define type lambdas with anonymous parameters, this would be more feasible.
Those who need V be inferred are happy, but those two need K be inferred would need to define something like
type M[V][K] = Map[K, V]
That could be turned into just Map[$][V] where $ behaves something like _ and turns it into [K] =>> Map[K][V], making it similar to Map[K]