serv-0.1.0.0: Dependently typed API server framework

Safe HaskellSafe
LanguageHaskell2010

Serv.Internal.Pair

Synopsis

Documentation

data Pair a b Source #

Equivalent to a tuple at both the type and kind levels, but has a nicer syntax!

Constructors

a ::: b infixr 6 

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 #

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 #

ReflectQuery a ([] (Pair a *)) Source # 

Methods

reflectQuery :: Rec [Pair a *] query -> Query Source #

ReflectHeaders a ([] (Pair a *)) Source # 

Methods

reflectHeaders :: Rec [Pair a *] headers -> [Header] Source #

(KnownSymbol s, QueryEncode s a, ReflectQuery Symbol query) => ReflectQuery Symbol ((:) (Pair Symbol *) ((:::) Symbol * s a) query) Source # 

Methods

reflectQuery :: Rec ((Pair Symbol * ': (Symbol ::: *) s a) query) query -> Query Source #

(ReflectName name, HeaderEncode name ty, ReflectHeaders HeaderName headers) => ReflectHeaders HeaderName ((:) (Pair HeaderName *) ((:::) HeaderName * name ty) headers) Source # 

Methods

reflectHeaders :: Rec ((Pair HeaderName * ': (HeaderName ::: *) name ty) headers) headers -> [Header] Source #

(ReflectName name, ReflectHeaderNames [Pair HeaderName b] hdrs) => ReflectHeaderNames [Pair HeaderName b] ((:) (Pair HeaderName b) ((:::) HeaderName b name ty) hdrs) Source # 

Methods

reflectHeaderNames :: Proxy ((Pair HeaderName b ': (HeaderName ::: b) name ty) hdrs) headers -> [HeaderName] Source #