class Foo {
type L[A] = Either[String, A]
foo[L](bar)
}
↓
class Foo {
type Anonymous = {type L[A] = Either[String, A]}
foo[Anonymous#L](bar)
}
↓
class Foo {
foo[({type L[A] = Either[String, A]})#L](bar)
}
use kind-projector
class Foo {
foo[Either[String, ?]](bar)
}