Por que não podemos definir famílias de dados fechadas?

Todo o trabalho a seguir:

{-# 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!

... mas isso não acontece (como no GHC-8.2):

data family CDF a where
  CDF Int = CDFInt String
  CDF Bool = CDFBool Char
  CDF a = CDFOther Double
wtmpf-file24527.hs:16:19: error: parse error on input ‘where’
   |
16 | data family CDF a where
   |                   ^^^^^

Será que ninguém se deu ao trabalho de implementar isso ainda, ou existe uma razão específica para não fazer sentido o fechamento de famílias de dados? Eu tenho uma família de dados em que eu gostaria de manter a injetividade, mas também a oportunidade de criar uma instância abrangente e abrangente. No momento, a única maneira que vejo para fazer isso funcionar é

newtype CDF' a = CDF' (CTF a)

questionAnswers(1)

yourAnswerToTheQuestion