我想使用自定义约束来帮助抑制组合爆炸:
{-# LANGUAGE ConstraintKinds #-}
{-# LANGUAGE MultiParamTypeClasses #-}
class DifferentTypes a b
type DifferentTypes3 a b c = (DifferentTypes a b, DifferentTypes b c, DifferentTypes a c)
当我使用自定义约束时,此代码无法编译:
class Foo a
class Bar a
instance (DifferentTypes3 a b c, Bar a, Bar b, Bar c) => Foo (a, b, c)
但是当我手动写出我的约束时,它会编译:
class Foo a
class Bar a
instance (DifferentTypes a b, DifferentTypes b c, DifferentTypes a c, Bar a, Bar b, Bar c) => Foo (a, b, c)
这是一个错误,还是我错过了什么?