trait Bijection[A, B] extends (A => B) {
def andThen[C](g: Bijection[B, C]): Bijection[A, C] = ???
def compose[T](g: Bijection[T, A]) = g andThen this
}
// <console>:14: error: overloaded method compose needs result type
// def compose[T](g: Bijection[T, A]) = g andThen this
// ^