2

阅读 Chuusai 的这篇博,它说:

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

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

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

4

1 回答 1

0

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

于 2014-01-30T05:30:42.853 回答