为什么这些类型的家庭实例冲突?

时间:2017-07-06 20:16:43

标签: haskell type-families

我正在使用GHC-8.0.1。此代码(需要singletons lib):

{-# LANGUAGE TypeFamilies            #-}       
{-# LANGUAGE DataKinds               #-}
{-# LANGUAGE KindSignatures          #-}
{-# LANGUAGE TypeOperators           #-}
{-# LANGUAGE FlexibleInstances       #-}
{-# LANGUAGE FlexibleContexts        #-}           
{-# LANGUAGE ScopedTypeVariables     #-}
{-# LANGUAGE TypeInType              #-}
{-# LANGUAGE AllowAmbiguousTypes     #-}
{-# LANGUAGE GADTs                   #-}
{-# LANGUAGE ConstraintKinds         #-}

module Bug where

import Data.Kind
import Data.Singletons

type family MkCtx (kx :: Type) (kc :: Type) (c :: kc) (x :: kx) :: Constraint
type instance MkCtx kx (kx ~> Constraint) c x = Apply c x
type instance MkCtx kx (kx -> Constraint) c x = c x

带有消息:

Conflicting family instance declarations:
      forall kx (x :: kx) (c :: kx ~> Constraint).
        MkCtx kx (kx ~> Constraint) c x = Apply c x
      forall kx (x :: kx) (c :: kx -> Constraint).
        MkCtx kx (kx -> Constraint) c x = c x

为什么GHC认为这些实例存在冲突? 我不知道它们是如何重叠的。

更新:确认GHC错误https://ghc.haskell.org/trac/ghc/ticket/13931

0 个答案:

没有答案