Контекст, привязанный к вложенному типу

Можно ли как-то создать контекст, привязанный к вложенному типу? Что-то вроде этого:

def f[T : U[List]](a: T)

Конечно, это не синтаксис Scala, но он иллюстрирует то, чего я хочу достичь, то есть получить ограничение на неявное U[List[T]]. Это возможно?

Спасибо.


person ale64bit    schedule 22.05.2015    source источник


Ответы (1)


Вы можете сделать это с псевдонимом типа:

type UList[X] = U[List[X]]
def f[T : UList](a: T)

or

def f[T:({type UL[X] = U[List[X]]})#UL](a: T)
person Odomontois    schedule 22.05.2015
comment
Что ж, я ожидал чего-то без алиаса, а не мерзости второго решения :) Подожду немного и если ничего лучше не приму твой ответ. Спасибо! - person ale64bit; 22.05.2015
comment
@kaktusito Я очень недоволен текущим синтаксисом для преобразования типов в scala. - person Odomontois; 22.05.2015
comment
Похоже, что есть несколько старых вопросов по теме (например, этот stackoverflow.com/questions/6247817/), но тогда на это больше не обращали внимания. - person ale64bit; 22.05.2015
comment
Если вам не нравится синтаксис для каррирования типов (а кому он нравится?), вот плагин компилятора для проектора, который позволяет использовать более естественный синтаксис. - person Aldo Stracquadanio; 22.05.2015