Hãy xem xét ví dụ sau:Haskell: mặc định ràng buộc để gõ
applyKTimes :: Integral i => i -> (a -> a) -> a -> a
applyKTimes 0 _ x = x
applyKTimes k f x = applyKTimes (k-1) f (f x)
applyThrice :: (a -> a) -> a -> a
applyThrice = applyKTimes 3
Các 3
trong applyThrice
được mặc định bởi GHC một Integer
như khi biên dịch với -Wall
:
Warning: Defaulting the following constraint(s) to type 'Integer'
'Integral t'
arising from a use of 'applyKTimes'
Vì vậy, tôi đoán rằng Integer
là mặc định Integral a => a
.
- Có cách nào để xác định "loại mặc định" cho các ràng buộc khác không?
- Có sử dụng các loại mặc định không? (Nó không phàn nàn khi sử dụng
-Wall
..)