What are the limitations on inference of higher-kinded types in Scala?
In the following simplified sample code: case class One[A](a: A) // An identity functor case class Twice[F[_], A](a: F[A], b: F[A]) // A functor transformer type Twice1[F[_]] = ({type L[α] = Twice[F, α]}) // We'll use Twice1[F]#L when we'd like to write Twice[F] trait Applicative[F[_]] // Members omitted val applicativeOne: Applicative[One] = null // Implementation omitted def applicativeTwice[F[_]](implicit inner: Applicative[F]): Applicative[({type L[α] = Twice[F, α]})#L] = null I can call applicativeTwice on applicativeOne, and type inference works, as soon as I try to call it on