У меня есть функция, чтобы засвидетельствовать эквивалентность типов:
def typeEq[A, B](a: A, b: B)(implicit ev: A =:= B) = println("happy")
typeEq: [A, B](a: A, b: B)(implicit ev: A =:= B)Unit
Не удается проверить следующие два разных типа синглтона:
class X
val a = new X; val b = new X
val aa:a.type = a; val bb:b.type = b
typeEq(aa, bb)
Однако, если я напишу так, компилятор будет работать нормально:
class X
val a = new X; val b = new X
type atype=a.type; type btype=b.type
val aa:atype = a; val bb:btype = b
typeEq(aa, bb)
<console>:15: error: Cannot prove that atype =:= btype.
typeEq(aa, bb)
^
Ценю вашу помощь.