2
我想使用自定義的限制,以幫助遏制組合爆炸:ConstraintKind不一致?
{-# 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)
這是一個錯誤,還是我錯過了什麼?
您需要爲此啓用「UndecidableInstances」。約束會比您期望的更晚。 – Satvik
儘管'UndecidableInstances'似乎是一個解決方法,我會稱這是一個錯誤。 –
感謝信息傢伙。我在這裏提交了一個bug http://ghc.haskell.org/trac/ghc/ticket/8359 –