names-0.2.3: src/Data/Name.hs
{-# 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