1 2 3 4 5 6 7
trait PartialType[T[_, _], A] { type Apply[B] = T[A, B] } sealed trait State[S, +A] trait Pure[P[_]] trait StatePure[X] extends Pure[PartialType[State, X]#Apply]