ero solo pottering circa con Tony Morris' excellent exercise on catamorphisms, quando stavo riflettendo quello che stava accadendo nella seguente situazione ...Scala domanda inferenza di tipo
def cata[X](some: A => X, none: => X): X
Permettetemi ora di chiamare questo metodo come segue:
def isDefined: Boolean = cata(_ => true, false)
Mi chiedevo se il tipo di iniziatore determina il tipo di _ => true
da A => Boolean
o Any => Boolean
. A causa del fatto che Function1
è contropartita variante nel suo parametro di ingresso, entrambe le seguenti compilare bene:
def isDefined: Boolean = cata((_: A) => true, false) //#1
def isDefined: Boolean = cata((_: Any) => true, false) //#2
Quindi la domanda è, fa il tipo inferencer venire con 1 # o # 2?
Quale versione di 'scalac' stai usando? –
Sto usando 2.8.0 RC2 –