Estaba a entretenerse con Tony Morris' excellent exercise on catamorphisms, cuando yo estaba pensando en lo que estaba ocurriendo en la siguiente situación ...Scala pregunta inferencia de tipos
def cata[X](some: A => X, none: => X): X
Permítanme ahora llamar a este método de la siguiente manera:
def isDefined: Boolean = cata(_ => true, false)
Me preguntaba si el tipo inferencer determina que el tipo de _ => true
es A => Boolean
o Any => Boolean
. Debido al hecho de que Function1
es contra-variante en su parámetro de entrada, ambos de los siguientes compilar bien:
def isDefined: Boolean = cata((_: A) => true, false) //#1
def isDefined: Boolean = cata((_: Any) => true, false) //#2
Así que la pregunta es, ¿el tipo inferencer subir con # 1 o # 2?
¿Qué versión de 'scalac' estás usando? –
Estoy usando 2.8.0 RC2 –