scala - 同构类型的 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
。
推荐阅读
- oop - TObjectList.DisposeOf 上的指针操作无效
- python - 使用 Python 在 PostgreSQL 的 SQL 语句中分配/替换值列表
- excel - 根据来自其他工作表的查找值删除/添加行
- css - 如何使用断点使 mixin 助手响应?
- c# - WPF WebHostBuilder 不包含 UseKestrel 的定义
- arrays - 将变量与 Math.max(...arr) 进行比较未返回准确答案
- python - 如何使用 scikit-learn 中的信息增益度量在 Dataframe 中选择最佳特征
- r - R控制台中的非数字到二进制运算符错误
- c# - 倍数 AddOnSuccessListener?
- django - 如何限制添加到 django 中的模型