Nicel kısıtlamalar ile Eq (A f)
iyi para cezası alabilir miyim? Ancak, Ord (A f) 'yi türetmeye çalıştığımda başarısız olur. Kısıtlama sınıfının bir üst sınıfı olduğunda nicelenmiş kısıtlamaları nasıl kullanacağımı anlamıyorum. Ord (A f)
Üst sınıf olan diğer sınıfları nasıl türetebilirim ?
> 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)'
PS. Ayrıca ghc teklifleri 0109-nicelleştirilmiş-kısıtlamaları da inceledim . Ghc 8.6.5 kullanma
deriving instance (forall a. (Eq a, Ord a) => (Eq (f a), Ord (f a))) => Ord (A f)
. Neden bir fark olduğunu biliyor musunuz?