Предположим, у меня есть определение, которое принимает несколько параметров типа:
def foo[A, B, C](b: B, c: C)(implicit ev: Writer[A])
Однако предполагаемое использование заключается в том, что параметры типа B
и C
должны быть выведены (на основе переданных аргументов). И вызывающей стороне нужно только явно указать A
(например, чтобы компилятор выбрал соответствующий имплицит). К сожалению, Scala позволяет вызывающему коду указывать только все параметры типа или ни один из них. В некотором смысле я хочу, чтобы параметры типа были каррированы:
def foo[A][B, C]...
Есть ли какой-нибудь трюк, чтобы сделать это в Scala?
(Если мой конкретный пример не имеет полного смысла, я буду рад улучшить его своими предложениями.)