¿Cuáles son las limitaciones en la inferencia de tipos de clase superior en Scala?

En el siguiente código de ejemplo simplificado:

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

Puedo llamar a dos veces aplicativas sobre aplicativo, y la inferencia de tipos funciona, tan pronto como intento llamarlo a dos veces aplicativas (aplicativo una), la inferencia falla:

val aOK = applicativeTwice(applicativeOne)
val bOK = applicativeTwice[Twice1[One]#L](applicativeTwice(applicativeOne))
val cFAILS = applicativeTwice(applicativeTwice(applicativeOne))

Los errores en scala 2.10.0 son.

- type mismatch; 
  found : tools.Two.Applicative[[α]tools.Two.Twice[tools.Two.One,α]]
  required: tools.Two.Applicative[F]
- no type parameters for method applicativeTwice: 
  (implicit inner: tools.Two.Applicative[F])tools.Two.Applicative[[α]tools.Two.Twice[F,α]]
  exist so that it can be applied to arguments 
  (tools.Two.Applicative[[α]tools.Two.Twice[tools.Two.One,α]]) 
  --- because --- 
  argument expression's type is not compatible with formal parameter type; 
     found : tools.Two.Applicative[[α]tools.Two.Twice[tools.Two.One,α]] 
     required: tools.Two.Applicative[?F]

¿Por qué "? F" no coincide con nada (del tipo correcto)? En última instancia, me gustaría que la dos veces aplicativa fuera una función implícita, pero primero tendría que hacer que la inferencia de tipo funcionara. He visto preguntas similares, y las respuestas apuntan a limitaciones en los algoritmos de inferencia de tipos. Pero este caso parece bastante limitativo, y debe ser bastante molesto en los transformadores de mónada, así que sospecho que me estoy perdiendo algún truco para solucionar esto.

Respuestas a la pregunta(2)

Su respuesta a la pregunta