Компилятор Scala не всегда может определить типы, например: подумайте о перегруженных методах, когда компилятор не может знать, на какой из них вы ссылаетесь.
def wrap(prefix: String)(html: String)(suffix: String) = prefix + html + suffix
def wrap(prefix: Int)(html: String)(suffix: String) = prefix.toString + html + suffix
val foo = wrap(_: String)("Hello")(_: String)
val foo1 = wrap(_)("Hello")(_) // compilation Error: Cannot resolve method 'wrap'
Итак, вам нужно явно указать типпараметр, как показано ниже:
val foo = wrap(_: String)("Hello")(_: String)
val foo1 = wrap(_: Int)("Hello")(_: String)
или явно указать тип возвращаемого значения:
val foo: (String, String) => String = wrap(_)("Hello")(_)
val foo1: (Int, String) => String = wrap(_)("Hello")(_)