{-# LANGUAGE TypeOperators, EmptyDataDecls #-} {-# LANGUAGE TypeFamilies #-} {-# LANGUAGE GADTs #-} -- | -- Module : Data.Type.List -- Copyright : (c) 2011 Edwin Westbrook, Nicolas Frisby, and Paul Brauner -- -- License : BSD3 -- -- Maintainer : emw4@rice.edu -- Stability : experimental -- Portability : GHC -- -- A /type list/ contains types as elements. We use GADT proofs terms to -- establish membership and append relations. A @Data.Type.List.Map.MapC@ @f@ -- is a vector indexed by a type list, where @f :: * -> *@ is applied to each -- type element. module Data.Type.List ( module Data.Type.List.List, -- | Type-level nil, cons, and ++ module Data.Type.List.Map, -- | Vectors parameterized by a @* -> *@ and indexed by a type list module Data.Type.List.Proof.Member, -- | Membership functions and proofs module Data.Type.List.Proof.Append, -- | Append functions and proofs module Data.Type.Equality, module Data.Proxy ) where import Data.Type.List.List import Data.Type.List.Map (MapC(..)) import Data.Type.List.Proof.Member (Member(..)) import Data.Type.List.Proof.Append (Append(..)) import Data.Type.Equality ((:=:)(..)) import Data.Proxy (Proxy(..))