Я просто возился с Прекрасным упражнением Тони Морриса по катаморфизму , когда я размышлял о том, что происходит в следующей ситуации ...
def cata[X](some: A => X, none: => X): X
Позвольте мне теперь вызвать этот метод следующим образом:
def isDefined: Boolean = cata( _ => true, false)
Мне было интересно, определяет ли тип выводителя тип _ => true
как A => Boolean
или Any => Boolean
. Из-за того, что Function1
является противопоказанным во входном параметре, оба следующих компиляции просто отлично:
def isDefined: Boolean = cata( (_: A) => true, false) //#1
def isDefined: Boolean = cata( (_: Any) => true, false) //#2
Итак, вопрос в том, придет ли логический вывод типа # 1 или # 2?