2014-01-30 181 views
1

從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 

無論[詮釋,字符串]可以模擬聯合類型詮釋∨字符串它們的值

什麼是「這兩種類型之間存在同構關係及其值」是什麼意思?

+2

你的意思是「咖喱霍華德同構」和這裏的好解釋:http://en.wikibooks.org/wiki/Haskell/The_Curry-Howard_isomorphism – Yuriy

回答

0

首先,您必須在Scala的上下文中定義術語「值」。我假設意味着與該類型的規範表達式中,左邊的表格(Ñ)或右(小號)爲恆定整數Ñ或串小號的表達式。然後同構是一個直接映射到數學類型Int ∪ String。但是,如何,例如,null或Right(null)?這些映射下有這些映像嗎?似乎不完全同構於我。