gpt4 book ai didi

haskell - GHC 8.0.1 挂起。解释或编译器错误?

转载 作者:行者123 更新时间:2023-12-04 01:12:26 26 4
gpt4 key购买 nike

有人可以解释为什么下面的代码会导致 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 _ = ()

最佳答案

编译器在没有 UndecidableInstances 的情况下陷入无限循环或 UndecidableSuperclassCycles是一个编译器错误,如 jberryman stated .您应该在 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 _ _ _ = ()

关于haskell - GHC 8.0.1 挂起。解释或编译器错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39085532/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com