trait Inner[F]{ type T } object Inner{ def apply[F](implicit inner: Inner[F]) = inner implicit def mk[F[_], A] = new Inner[F[A]]{ type T = A } }
trait Inner[F]{
type T
}
object Inner{
def apply[F](implicit inner: Inner[F]) = inner
implicit def mk[F[_], A] = new Inner[F[A]]{
type T = A
}
}