-- | Wrappers for "free" generics, where the base case is handled for you. module Generic.Data.Wrappers where import GHC.TypeLits ( ErrorMessage(Text) ) -- | Free generic wrapper where any field emits a type error. -- -- Useful for generic functions on void or enum types. data NoRec0 (a :: k) type ENoRec0 = 'Text "Cannot use generic function on NoRec0-wrapped type containing fields" -- | Free generic wrapper where every field does "nothing" (e.g. 'mempty'.) -- -- Maybe useful for testing? data EmptyRec0 (a :: k)