scala类型检查中上限约束的传递性

时间:2015-05-31 09:29:46

标签: scala typechecking type-level-computation

我正在尝试使用Scala中的类型级编程。我认为以下代码应该键入check,

trait T[X] {
  type t <: X
}

trait A[X, e <: T[T[X]]] extends T[X] {
  final type t  = e # t # t
}

但我不断收到以下类型错误:

error: overriding type t in trait T with bounds <: X;
 type t has incompatible type
       trait A[X, e <: T[T[X]]] extends T[X] { final type t  = e # t # t }
                                                          ^
Nothing <: A.this.t?
true
A.this.t <: X?
false

我虽然特质type t <: X中的约束T会强制e#t <: T[X],因而e#t#t <: X。我错了吗?

0 个答案:

没有答案