{-# LANGUAGE Haskell2010 , ScopedTypeVariables , TypeOperators #-} {- | Type level names. Names are like strings on the type level. This is a name: > H :& E :& L :& L :& O :& W_ :& O :& R :& L :& D This package provides types which can be used as letters and a cons operator (@:&@). It also provides syntactic sugar for using names via template haskell: > name "helloWorld" This will create a value named @helloWorld@ which has the above type and can be used to work with the name. Names are useful for named records. See the @named-records@ package. -} module Data.Name ( (:&), module Data.Name.Internal.Names, name, nameT, nameV ) where import Data.Name.Internal.Names import Data.Name.Internal.TH instance (Show a, Show b) => Show (a :& b) where show _ = let showA = show :: a -> String showB = show :: b -> String in showA undefined ++ showB undefined