同构类型的猫类型类

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