sealed trait Kleisli[M[_], A, B] trait PartialApplyKA[T[_[_], _, _], M[_], A] { type Apply[B] = T[M, A, B] } trait MA[M[_], A] trait MAs { val a: MA[PartialApplyKA[Kleisli, List, String]#Apply, Int] = null } object Scalaz extends MAs