      |     def ~~~[RA, RB](other: Op[A, B, RA, RB]): (RA, RB) = other.apply(t)      |   } defined class RichTuple0  scala>   def swap[A, B] = new Op[A, B, B, A] {      |     override def apply(other: (A, B)) = (other._0, other._0)      |   } swap: [A, B]=> Op[A,B,B,A]  scala> (0, "foo") ~~~ swap 