정량화 된 제약 조건으로 Eq (A f)
잘 파생 될 수 있습니까? 그러나 Ord (A f)를 얻으려고하면 실패합니다. 제약 조건 클래스에 수퍼 클래스가있을 때 정량화 된 제약 조건을 사용하는 방법을 이해하지 못합니다. Ord (A f)
수퍼 클래스가있는 클래스와 다른 클래스를 어떻게 파생 합니까?
> 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)'
추신. 또한 ghc 제안서 0109-quantified-constraints 도 검토했습니다 . ghc 8.6.5 사용
deriving instance (forall a. (Eq a, Ord a) => (Eq (f a), Ord (f a))) => Ord (A f)
. 왜 차이가 있는지 아십니까?