簡體   English   中英

GHC 8.0.1掛起。 解釋或編譯錯誤?

[英]GHC 8.0.1 hangs. Explanation or compiler bug?

有人可以解釋為什么下面的代碼導致G​​HC 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所說 ,沒有UndecidableInstancesUndecidableSuperclassCycles的編譯器陷入無限循環是一個編譯器錯誤。 您應該在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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM