假设:导致Constraint
的类型族总是在其representational
参数上分布。
例如,如果Fam x Eq `And` Fam x Show
的第二个参数具有代表性,则Fam x (Eq `And` Show)
等效于Fam
。
问题:
答案 0 :(得分:1)
从直觉上讲,如果Fam x c
以相反的方式使用c
,则此操作将失败。
现在可以使用量化约束来实现。例如
Fam x c = (forall a. c a => D a x)
某些D a x :: Constraint
。
(即使我并不完全肯定我也认为这是representational
。)
因此Fam x (Show `And` Eq)
意味着
forall a. (Show a, Eq a) => D a x
而(Fam x Eq, Fam x Show)
是
( forall a. (Show a) => D a x
, forall a. (Eq a) => D a x )
这两个约束不相等。例如,如果D a x = (Show a, Eq a)
对前者是微不足道的,而对后者则不满意。