Scala同构类型

时间:2014-01-30 04:09:14

标签: scala isomorphism

从Chuusai阅读此博客post,它说:

def size(x : Either[Int, String]) = x match {
  case Left(i) => i
  case Right(s) => s.length
}

size(Left(23)) == 23    // OK
size(Right("foo")) == 3 // OK
  

[Int,String]可以模拟联合类型Int∨String,因为   两种类型之间存在同构性及其值

“两种类型之间是否存在同构及其价值”是什么意思?

1 个答案:

答案 0 :(得分:0)

首先,您必须在Scala的上下文中定义术语“值”。我假设这意味着具有该类型的规范表达式,表达式为左( n )或右( s )表示常量整数 n 或字符串 s 。然后同构是直接映射到数学类型Int∪String。但是,例如,null或Right(null)呢?这些映射下有这些图像吗?对我来说似乎并不完全同构。