10
在ghci
,我跑:`5`權在Haskell和Scala
ghci> :t Right 5
Right 5 :: Num b => Either a b
什麼的a
意思?
它與Scala的版本相比如何?
scala> Right(5)
res0: scala.util.Right[Nothing,Int] = Right(5)
在ghci
,我跑:`5`權在Haskell和Scala
ghci> :t Right 5
Right 5 :: Num b => Either a b
什麼的a
意思?
它與Scala的版本相比如何?
scala> Right(5)
res0: scala.util.Right[Nothing,Int] = Right(5)
a
是,像b
在這個例子中,類型的變量。它可以用任何類型實例化(而b
可以用滿足約束條件的任何類型實例化,它也是Num
的一個實例)。
由於scala的類型系統非常不同,scala示例的工作原理完全不同,有沒有一個真正的價值觀沒有一個完全實例化的類型,所以你需要爲你的Either
價值的可能性分配一個類型。除了進一步的限制,這只是Nothing
。由於scala的類型系統的工作方式(Nothing
是任何其他類型的子類型,因此您可以將其視爲Any
類型的雙重對象),對於任何A
,Either[Nothing,B]
也是Either[A,B]
。
只是想指出,「任何」和「無」是雙重的,因爲它們是完全相反的:「任何」都是通用超類型,「無」是通用子類型。當然,沒有價值可以是'Nothing'類型:完美地描述'Right'的左邊部分! –