相关疑难解决方法(0)

为什么我们不能定义封闭数据系列?

以下所有工作:

{-# LANGUAGE TypeFamilies #-}

type family TF a
type instance TF Int = String
type instance TF Bool = Char

data family DF a
data instance DF Int = DFInt String
data instance DF Bool = DFBool Char

type family CTF a where
  CTF Int = String
  CTF Bool = Char
  CTF a = Double     -- Overlap OK!
Run Code Online (Sandbox Code Playgroud)

......但这不是(截至GHC-8.2):

data family CDF a where
  CDF Int = CDFInt String
  CDF Bool = CDFBool Char
  CDF a = CDFOther Double …
Run Code Online (Sandbox Code Playgroud)

haskell type-families injective-function

11
推荐指数
1
解决办法
379
查看次数