Скала Изоморфные Типы
Читая этот пост в блоге от 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
Либо [Int, String] может моделировать тип объединения Int ∨ String, поскольку существует изоморфизм между двумя типами и их значениями.
Что означает "изоморфизм между двумя типами и их значениями"?
1 ответ
Сначала вы должны определить термин "ценности" в контексте Scala. Я предполагаю, что это означает канонические выражения с этим типом, выражения вида Left (n) или Right (s) для постоянного целого числа n или строки s. Тогда изоморфизм - это прямое отображение на математический тип Int ∪ String. Но что, например, ноль или право (ноль)? У них есть изображения под этим отображением? Не кажется мне полностью изоморфным.