[英]GHC 8.0.1 hangs. Explanation or compiler bug?
有人可以解釋為什么下面的代碼導致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 _ = ()
正如jberryman所說 ,沒有UndecidableInstances
或UndecidableSuperclassCycles
的編譯器陷入無限循環是一個編譯器錯誤。 您應該在GHC Trac網站上報告。
我簡化了你的例子,這可能會或可能不會澄清事情,並可能使你的錯誤報告更有效。
{-# LANGUAGE TypeFamilyDependencies #-}
module TFLoop where
import Data.Proxy
main :: IO ()
main = return $ f Proxy Proxy (Just 'c')
data D1 x
data D2
type family TF d a = t | t -> d a
type instance TF (D1 x) a = Maybe (TF x a)
type instance TF D2 () = Char
f :: proxy1 x -> proxy2 a -> TF x a -> ()
f _ _ _ = ()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.