特別是,這個運算式編譯:
x = 4 :: Product Int
為什么文字4can be Product Int,即使它的型別是Num a => a?
uj5u.com熱心網友回復:
4是帶有型別注釋的運算式。未注釋的運算式具有型別Num a => a,但注釋強制型別為Product Int。
注釋是合法的,因為只要Product a有一個實體(有)就有一個實體:NumaNumInt
> :info Product
newtype Product a = Product {getProduct :: a}
[...]
instance Num a => Num (Product a)
[...]
> Product 3 Product 5
Product {getProduct = 8}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/528491.html
標籤:哈斯克尔
