同构类型的猫类型类
Cats typeclass for isomorphic types
我应该使用什么 cats 类型类来编码这两种类型是同构的(即可以来回转换而没有效果)
我想将一个类型的分解编码为另外两个的元组:
A <=> (B, C)
显然,类型类应该公开每个转换方向的两个函数,最好是隐式方法以便于转换。
类似这样的东西:(但没找到)
trait Iso[A,B] {
def to(a: A):B
def from(b: B): A
}
您在寻找 cats.evidence.Is
吗?
type A
type B
type X = Is[A, B] // A Is B
val a: A = ???
val b: B = ???
val x: A Is B = ???
val y: B Is A = ???
x.coerce(a): B
y.coerce(b): A
类似于scalaz.Leibniz
。
我应该使用什么 cats 类型类来编码这两种类型是同构的(即可以来回转换而没有效果)
我想将一个类型的分解编码为另外两个的元组:
A <=> (B, C)
显然,类型类应该公开每个转换方向的两个函数,最好是隐式方法以便于转换。 类似这样的东西:(但没找到)
trait Iso[A,B] {
def to(a: A):B
def from(b: B): A
}
您在寻找 cats.evidence.Is
吗?
type A
type B
type X = Is[A, B] // A Is B
val a: A = ???
val b: B = ???
val x: A Is B = ???
val y: B Is A = ???
x.coerce(a): B
y.coerce(b): A
类似于scalaz.Leibniz
。