reroute-0.2.2.1: abstract implementation of typed and untyped web routing

Safe HaskellSafe-Inferred
LanguageHaskell2010

Data.HVect

Documentation

data HVect ts where Source

Constructors

HNil :: HVect [] 
HCons :: t -> HVect ts -> HVect (t : ts) 

type family HVectElim ts a :: * Source

Instances

type HVectElim ([] *) a = a 
type HVectElim ((:) * t ts) a = t -> HVectElim ts a 

type family Append as bs :: [*] Source

Instances

type Append ([] *) bs = bs 
type Append ((:) * a as) bs = (:) * a (Append as bs) 

hVectAppend :: HVect as -> HVect bs -> HVect (Append as bs) Source

type family ReverseLoop as bs :: [*] Source

Instances

type ReverseLoop ([] *) bs = bs 
type ReverseLoop ((:) * a as) bs = ReverseLoop as ((:) * a bs) 

type Reverse as = ReverseLoop as [] Source

hVectUncurry :: HVectElim ts a -> HVect ts -> a Source

data Rep ts where Source

Constructors

RNil :: Rep [] 
RCons :: Rep ts -> Rep (t : ts) 

class HasRep ts where Source

Methods

hasRep :: Rep ts Source

Instances

HasRep ([] *) 
HasRep ts => HasRep ((:) * t ts) 

hVectCurryExpl :: Rep ts -> (HVect ts -> a) -> HVectElim ts a Source

hVectCurry :: HasRep ts => (HVect ts -> a) -> HVectElim ts a Source

packExpl :: Rep ts -> (forall a. HVectElim ts a -> a) -> HVect ts Source

pack :: HasRep ts => (forall a. HVectElim ts a -> a) -> HVect ts Source