serv-0.1.0.0: Dependently typed API server framework

Safe HaskellSafe
LanguageHaskell2010

Serv.Internal.Rec

Synopsis

Documentation

data Rec rs where Source #

An HList collecting heterogenous types matched up to labeling information

Constructors

Nil :: Rec '[] 
Cons :: ty -> Rec rs -> Rec ((name ::: ty) ': rs) 

(-:) :: Proxy name -> ty -> Rec rs -> Rec ((name ::: ty) ': rs) Source #

Append a new header value on to a record

class Elem name e es where Source #

Minimal complete definition

eGet, eMap

Methods

eGet :: Rec es -> Tagged name e Source #

eMap :: Tagged name (e -> e) -> Rec es -> Rec es Source #

Instances

Elem a k name e rs => Elem a k name e ((:) (Pair a *) r rs) Source # 

Methods

eGet :: Rec name es -> Tagged e ((Pair a * ': r) rs) e Source #

eMap :: Tagged e ((Pair a * ': r) rs) (e -> e) -> Rec name es -> Rec name es Source #

Elem a a name e ((:) (Pair a *) ((:::) a * name e) rs) Source # 

Methods

eGet :: Rec name es -> Tagged e ((Pair a * ': (a ::: *) name e) rs) e Source #

eMap :: Tagged e ((Pair a * ': (a ::: *) name e) rs) (e -> e) -> Rec name es -> Rec name es Source #

class Subset rs qs where Source #

Minimal complete definition

project

Methods

project :: Rec qs -> Rec rs Source #

Instances

Subset a1 a ([] (Pair a *)) qs Source # 

Methods

project :: Rec [Pair a *] qs -> Rec qs rs Source #

(Elem a a1 name r qs, Subset a a1 rs qs) => Subset a a1 ((:) (Pair a1 *) ((:::) a1 * name r) rs) qs Source # 

Methods

project :: Rec ((Pair a1 * ': (a1 ::: *) name r) rs) qs -> Rec qs rs Source #

class RecordIso rs qs where Source #

Minimal complete definition

reorder

Methods

reorder :: Rec rs -> Rec qs Source #

Instances

(Subset a a1 rs qs, Subset a1 a qs rs) => RecordIso a a1 rs qs Source # 

Methods

reorder :: Rec qs rs -> Rec rs qs Source #