    {-# LANGUAGE DataKinds             #-}
    {-# LANGUAGE FlexibleContexts      #-}
    {-# LANGUAGE FlexibleInstances     #-}
    {-# LANGUAGE KindSignatures        #-}
    {-# LANGUAGE MultiParamTypeClasses #-}
    {-# LANGUAGE TypeFamilies          #-}
    {-# LANGUAGE TypeOperators         #-}

    -----------------------------------------------------------------------------
    -- |
    -- Module      :  Data.Generics.Internal.Families
    -- Copyright   :  (C) 2020 Csongor Kiss
    -- License     :  BSD3
    -- Maintainer  :  Csongor Kiss <kiss.csongor.kiss@gmail.com>
    -- Stability   :  experimental
    -- Portability :  non-portable
    --
    -----------------------------------------------------------------------------
    module Data.Generics.Internal.Families
      ( module Families
      , ShowSymbols
      ) where

    import Data.Generics.Internal.Families.Collect   as Families
    import Data.Generics.Internal.Families.Has       as Families
    import Data.Generics.Internal.Families.Changing  as Families

    import GHC.TypeLits (ErrorMessage (..), Symbol)

    type family ShowSymbols (ctors :: [Symbol]) :: ErrorMessage where
      ShowSymbols '[]
        = 'Text ""
      ShowSymbols (c ': cs)
        = 'Text "• " ':<>: 'Text c ':$$: ShowSymbols cs