работать с имплицитами очень некрасиво, потому что это должно быть естественно описано как конструктор типов, и только методы могут иметь импликации, а не конструкторы типов. Так что я хотел бы переключиться обратно на уровень типа от последствий это на самом деле возможно

ите за неописательное название. Вычисления на уровне типов - не слишком распространенная тема в Интернете, чтобы установить точные термины.

Я пытался использовать вычисления уровня типа и внезапно получал ложные ошибки время от времени. Я просто не мог понять, почему так мало различий. Мне удалось подделать еще один краткий пример:

trait Sample {
  type X
  type DX[I <: X] <: Nothing
  type EX[I <: X] = Nothing
}
type Aux[I] = Sample {type X = I}

type U1 = Aux[Int]#DX[Int] // ok
type U2 = Aux[Int]#EX[Int] // fails

Сообщение об ошибке:

error: type arguments [Int] do not conform to type EX's type parameter bounds [I <: Sample.this.X]
type U2 = Aux[Int]#EX[Int]
                   ^

НоEX а такжеDX имел одинаковые границы параметров типа. Почему это правильно в одном случае и неправильно в другом?

Ответы на вопрос(0)

Ваш ответ на вопрос