Допустим, у меня есть функция:
def foo[A,B](a : A, f : A => B) = ...
И я называю это:
var x = new X()
foo(x, obj => ...
На данный момент ясно, что тип аргумента лямбда (здесь obj) это X (C # работает, например, так).
Однако в Scala я должен написать:
foo(x, (obj : X) => ...
Это вызывает много шума в коде.
Вопрос
Как написать мою функцию foo, чтобы избежать такой чрезмерной спецификации при каждом вызове? Или, может быть, я что-то упускаю, и добавление типа необходимо, потому что такой вызов (без информации о типе) будет неоднозначным.