Với các ràng buộc định lượng tôi có thể rút ra Eq (A f)
tốt không? Tuy nhiên, khi tôi cố gắng lấy Ord (A f) thì thất bại. Tôi không hiểu làm thế nào để sử dụng các ràng buộc được định lượng khi lớp ràng buộc có một siêu lớp. Làm thế nào để tôi lấy được Ord (A f)
và các lớp khác có siêu lớp?
> newtype A f = A (f Int)
> deriving instance (forall a. Eq a => Eq (f a)) => Eq (A f)
> deriving instance (forall a. Ord a => Ord (f a)) => Ord (A f)
<interactive>:3:1: error:
• Could not deduce (Ord a)
arising from the superclasses of an instance declaration
from the context: forall a. Ord a => Ord (f a)
bound by the instance declaration at <interactive>:3:1-61
or from: Eq a bound by a quantified context at <interactive>:1:1
Possible fix: add (Ord a) to the context of a quantified context
• In the instance declaration for 'Ord (A f)'
Tái bút Tôi cũng đã kiểm tra các đề xuất ghc 0109 định lượng . Sử dụng ghc 8.6.5
deriving instance (forall a. (Eq a, Ord a) => (Eq (f a), Ord (f a))) => Ord (A f)
. Bạn có biết tại sao có sự khác biệt?