假设我有两个类型Type1
和Type2
以及类型Type1 <:< Type2
和Type2 <:< Type1
的(非相异)值,Type1
和Type2
与不是是同一类型?
假设这样的事情是不可能的(我不认为这是事实),那么标准库中用于操纵此类证据的函数是吗?例如,功能如下:
def eq[A, B](ev1: A <:< B, ev2: B <:< A): A =:= B = ???
def sym[A, B](ev: A =:= B): B =:= A = ???
基本上等同于Haskell中的Data.Type.Equality
(但也包含涉及子类型化的实用程序)。
我显然可以欺骗一些原始方法,但这种方法击败了首先使用=:=
和<:<
的地步...
def eq[A, B](ev1: A <:< B, ev2: B <:< A): A =:= B = =:=.tpEquals[A,A].asInstanceOf
def sym[A, B](ev: A =:= B): B =:= A = =:=.tpEquals[A,A].asInstanceOf