When defining an unlifted datatype or newtype, GHC helpfully tells me Suggested fix: Perhaps you intended to use UnliftedNewtypes or UnliftedDatatypes. But this does not happen with data families, as can be tested by comparing the errors for A, B, C, D:
{-# LANGUAGE TypeFamilies, MagicHash, DataKinds #-}
module NT where
import GHC.Exts
{-
newtype A = MkA Int#
type B :: UnliftedType
data B = MkB
-}
data family C :: TYPE IntRep
newtype instance C = MkC Int#
data family D :: UnliftedType
data instance D = MkD
When defining an unlifted datatype or newtype, GHC helpfully tells me
Suggested fix: Perhaps you intended to use UnliftedNewtypes
orUnliftedDatatypes
. But this does not happen with data families, as can be tested by comparing the errors forA
,B
,C
,D
: