You can force input of type output one step at a time by entering intermediate contexts:
object example { trait AnyPrinter { type Show <: AnyShow } trait AnyShow { type X def apply(x: X): String } def print[P <: AnyPrinter](implicit p: P): print[P] = new print[P] class print[P <: AnyPrinter] { def it[E](e: E)(implicit s: P
Eduardo pareja tobes
source share