Учитывая
trait Foo {
type Bar
}
существует ли законный способ написать что-то вроде f: (x: Foo) => x.Bar
, так что возвращаемый тип функции зависит от аргумента? Примером использования может быть
def compareOutput(x1: Foo, x2: Foo)(f: (x: Foo) => x.Bar /* illegal */)(comparer: (x1.Bar, x2.Bar) => Boolean) = {
val y1 = f(x1)
val y2 = f(x2)
comparer(y1, y2)
}