有人可以解释为什么以下代码导致GHC 8.0.1在编译时永远循环,或者这是一个错误吗?
{-# LANGUAGE TypeFamilyDependencies #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE AllowAmbiguousTypes #-}
main = return $ f (Just 'c')
data D1 x
data D2
type family TF x = t | t -> x
type instance TF (D1 x, a) = Maybe (TF (x, a))
type instance TF (D2, ()) = Char
f :: TF (x, a) -> ()
f _ = ()
答案 0 :(得分:3)
编译器在没有Cart.tutors << tutor
或UndecidableInstances
的情况下陷入无限循环是一个编译器错误,如jberryman stated。您应该在GHC Trac网站上报告。
我简化了您的示例,可能会或可能不会澄清事情,并可能使您的错误报告更有效。
UndecidableSuperclassCycles