«Отсутствует тип параметра» в перегруженном универсальном методе, принимающем аргумент функции

У меня проблема в моем DSL с перегруженными универсальными методами, в результате чего компилятор хочет, чтобы я добавил явное типы параметров:

def alpha[T](fun: Int => T): String = fun(33).toString

def beta [T](fun: Int => T): String = fun(66).toString
def beta [T](thunk:   => T): String = thunk.toString

alpha { _ + 11 }          // ok
beta { _ + 22 }           // "error: missing parameter type for expanded function"
beta { _: Int => _ + 22 } // ok... ouch.

Есть ли шанс избавиться от беспорядка в последней строке?

РЕДАКТИРОВАТЬ:

Чтобы продемонстрировать, что перегрузка не является проблемой неоднозначности для скальака как такового, вот версия без типа параметр, который отлично работает:

def beta(fun: Int => String): String = fun(66).reverse
def beta(thunk:   => String): String = thunk.reverse

beta(_.toString)  // ok
beta("gaga")      // ok
7
задан 0__ 27 September 2013 в 19:37
поделиться