Tôi đã phát hiện ra rằng tôi có thể thực hiện việc này 1 :: Product Int
và nhận được kết quả là Product {getProduct = 1}
.hành vi kiểu mới trong Haskell
Product
là newtype
được xác định trong Data.Monoid
. Hơn tôi đã cố gắng xác định của riêng tôi newtype
như vậy:
newtype Stuff a = Stuff {getStuff :: a} deriving (Show)
Nhưng nếu tôi cố gắng làm 1 :: Stuff Int
tôi nhận được một lỗi:
<interactive>:20:1: error:
* No instance for (Num (Stuff Int)) arising from the literal `1'
* In the expression: 1 :: Stuff Int
In an equation for `it': it = 1 :: Stuff Int
Tôi có phải đặt Num
hạn chế về a
hoặc một cái gì đó? Tại sao nó không hoạt động?