我正在尝试使用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
。我错了吗?