Safe Haskell | None |
---|---|
Language | Haskell2010 |
Documentation
MFunctor * Bool ([] *) ([] Variance) | |
MFunctor * Ordering ([] *) ([] Variance) | |
MFunctor * () ([] *) ([] Variance) | |
AdaptFieldFunction ([] (Field *)) ([] Variance) ps vs | |
GFPMFunctor [Variance] n as vs => GFPMFunctor [Variance] (NS n) ((:) * (a -> b) as) ((:) Variance ContraV vs) | |
GFPMFunctor [Variance] n as vs => GFPMFunctor [Variance] (NS n) ((:) * (a -> b) as) ((:) Variance CoV vs) | |
MFunctor (* -> * -> * -> * -> * -> * -> * -> * -> * -> *) (,,,,,,,,) ((:) * (a -> a') ((:) * (b -> b') ((:) * (c -> c') ((:) * (d -> d') ((:) * (e -> e') ((:) * (f -> f') ((:) * (g -> g') ((:) * (h -> h') ((:) * (i -> i') ([] *)))))))))) ((:) Variance CoV ((:) Variance CoV ((:) Variance CoV ((:) Variance CoV ((:) Variance CoV ((:) Variance CoV ((:) Variance CoV ((:) Variance CoV ((:) Variance CoV ([] Variance)))))))))) | |
MFunctor (* -> * -> * -> * -> * -> * -> * -> * -> *) (,,,,,,,) ((:) * (a -> a') ((:) * (b -> b') ((:) * (c -> c') ((:) * (d -> d') ((:) * (e -> e') ((:) * (f -> f') ((:) * (g -> g') ((:) * (h -> h') ([] *))))))))) ((:) Variance CoV ((:) Variance CoV ((:) Variance CoV ((:) Variance CoV ((:) Variance CoV ((:) Variance CoV ((:) Variance CoV ((:) Variance CoV ([] Variance))))))))) | |
MFunctor (* -> * -> * -> * -> * -> * -> * -> *) (,,,,,,) ((:) * (a -> a') ((:) * (b -> b') ((:) * (c -> c') ((:) * (d -> d') ((:) * (e -> e') ((:) * (f -> f') ((:) * (g -> g') ([] *)))))))) ((:) Variance CoV ((:) Variance CoV ((:) Variance CoV ((:) Variance CoV ((:) Variance CoV ((:) Variance CoV ((:) Variance CoV ([] Variance)))))))) | |
MFunctor (* -> * -> * -> * -> * -> * -> *) (,,,,,) ((:) * (a -> a') ((:) * (b -> b') ((:) * (c -> c') ((:) * (d -> d') ((:) * (e -> e') ((:) * (f -> f') ([] *))))))) ((:) Variance CoV ((:) Variance CoV ((:) Variance CoV ((:) Variance CoV ((:) Variance CoV ((:) Variance CoV ([] Variance))))))) | |
MFunctor (* -> * -> * -> * -> * -> *) (,,,,) ((:) * (a -> a') ((:) * (b -> b') ((:) * (c -> c') ((:) * (d -> d') ((:) * (e -> e') ([] *)))))) ((:) Variance CoV ((:) Variance CoV ((:) Variance CoV ((:) Variance CoV ((:) Variance CoV ([] Variance)))))) | |
MFunctor (* -> * -> * -> * -> *) (,,,) ((:) * (a -> a') ((:) * (b -> b') ((:) * (c -> c') ((:) * (d -> d') ([] *))))) ((:) Variance CoV ((:) Variance CoV ((:) Variance CoV ((:) Variance CoV ([] Variance))))) | |
MFunctor (* -> * -> * -> *) (,,) ((:) * (a -> a') ((:) * (b -> b') ((:) * (c -> c') ([] *)))) ((:) Variance CoV ((:) Variance CoV ((:) Variance CoV ([] Variance)))) | |
MFunctor (* -> * -> *) (->) ((:) * (a' -> a) ((:) * (b -> b') ([] *))) ((:) Variance ContraV ((:) Variance CoV ([] Variance))) | |
MFunctor (* -> * -> *) Either ((:) * (a -> a') ((:) * (b -> b') ([] *))) ((:) Variance CoV ((:) Variance CoV ([] Variance))) | |
MFunctor (* -> * -> *) (,) ((:) * (a -> a') ((:) * (b -> b') ([] *))) ((:) Variance CoV ((:) Variance CoV ([] Variance))) | |
MFunctor (* -> *) [] ((:) * (a -> a') ([] *)) ((:) Variance CoV ([] Variance)) | |
MFunctor (* -> *) Sum ((:) * (a -> b) ([] *)) ((:) Variance CoV ([] Variance)) | |
MFunctor (* -> *) Product ((:) * (a -> b) ([] *)) ((:) Variance CoV ([] Variance)) | |
MFunctor (* -> *) First ((:) * (a -> b) ([] *)) ((:) Variance CoV ([] Variance)) | |
MFunctor (* -> *) Last ((:) * (a -> b) ([] *)) ((:) Variance CoV ([] Variance)) | |
MFunctor (* -> *) Maybe ((:) * (a -> a') ([] *)) ((:) Variance CoV ([] Variance)) | |
(MFunctor k f (ExpandFieldFunction bs (FlipVariance vs') ps vs) vs', (~) [*] (ExpandField bs (Domains ps vs)) (Codomains (ExpandFieldFunction bs (FlipVariance vs') ps vs) vs'), (~) [*] (ExpandField bs (Codomains ps vs)) (Domains (ExpandFieldFunction bs (FlipVariance vs') ps vs) vs'), AdaptFieldFunction bs (FlipVariance vs') ps vs, AdaptFieldFunction as vfs ps vs) => AdaptFieldFunction ((:) (Field *) ((:@:) * k f bs) as) ((:) Variance ContraV vfs) ps vs | |
(MFunctor k f (ExpandFieldFunction bs vs' ps vs) vs', (~) [*] (ExpandField bs (Codomains ps vs)) (Codomains (ExpandFieldFunction bs vs' ps vs) vs'), (~) [*] (ExpandField bs (Domains ps vs)) (Domains (ExpandFieldFunction bs vs' ps vs) vs'), AdaptFieldFunction bs vs' ps vs, AdaptFieldFunction as vfs ps vs) => AdaptFieldFunction ((:) (Field *) ((:@:) * k f bs) as) ((:) Variance CoV vfs) ps vs | |
(GFPMFunctor [Variance] n ps vs, AdaptFieldFunction as vfs ps vs, (~) * (Flip ((:!:) ps n)) ((:!:) (Domains ps vs) n -> (:!:) (Codomains ps vs) n)) => AdaptFieldFunction ((:) (Field *) (FP * n) as) ((:) Variance ContraV vfs) ps vs | |
(GFPMFunctor [Variance] n ps vs, AdaptFieldFunction as vfs ps vs, (~) * ((:!:) ps n) ((:!:) (Domains ps vs) n -> (:!:) (Codomains ps vs) n)) => AdaptFieldFunction ((:) (Field *) (FP * n) as) ((:) Variance CoV vfs) ps vs | |
AdaptFieldFunction as vfs ps vs => AdaptFieldFunction ((:) (Field *) (FK * a) as) ((:) Variance v vfs) ps vs |
class MFunctor f fs vs | f -> vs, fs -> k, vs -> k where Source
Nothing
MFunctor * Bool ([] *) ([] Variance) | |
MFunctor * Ordering ([] *) ([] Variance) | |
MFunctor * () ([] *) ([] Variance) | |
MFunctor (* -> * -> * -> * -> * -> * -> * -> * -> * -> *) (,,,,,,,,) ((:) * (a -> a') ((:) * (b -> b') ((:) * (c -> c') ((:) * (d -> d') ((:) * (e -> e') ((:) * (f -> f') ((:) * (g -> g') ((:) * (h -> h') ((:) * (i -> i') ([] *)))))))))) ((:) Variance CoV ((:) Variance CoV ((:) Variance CoV ((:) Variance CoV ((:) Variance CoV ((:) Variance CoV ((:) Variance CoV ((:) Variance CoV ((:) Variance CoV ([] Variance)))))))))) | |
MFunctor (* -> * -> * -> * -> * -> * -> * -> * -> *) (,,,,,,,) ((:) * (a -> a') ((:) * (b -> b') ((:) * (c -> c') ((:) * (d -> d') ((:) * (e -> e') ((:) * (f -> f') ((:) * (g -> g') ((:) * (h -> h') ([] *))))))))) ((:) Variance CoV ((:) Variance CoV ((:) Variance CoV ((:) Variance CoV ((:) Variance CoV ((:) Variance CoV ((:) Variance CoV ((:) Variance CoV ([] Variance))))))))) | |
MFunctor (* -> * -> * -> * -> * -> * -> * -> *) (,,,,,,) ((:) * (a -> a') ((:) * (b -> b') ((:) * (c -> c') ((:) * (d -> d') ((:) * (e -> e') ((:) * (f -> f') ((:) * (g -> g') ([] *)))))))) ((:) Variance CoV ((:) Variance CoV ((:) Variance CoV ((:) Variance CoV ((:) Variance CoV ((:) Variance CoV ((:) Variance CoV ([] Variance)))))))) | |
MFunctor (* -> * -> * -> * -> * -> * -> *) (,,,,,) ((:) * (a -> a') ((:) * (b -> b') ((:) * (c -> c') ((:) * (d -> d') ((:) * (e -> e') ((:) * (f -> f') ([] *))))))) ((:) Variance CoV ((:) Variance CoV ((:) Variance CoV ((:) Variance CoV ((:) Variance CoV ((:) Variance CoV ([] Variance))))))) | |
MFunctor (* -> * -> * -> * -> * -> *) (,,,,) ((:) * (a -> a') ((:) * (b -> b') ((:) * (c -> c') ((:) * (d -> d') ((:) * (e -> e') ([] *)))))) ((:) Variance CoV ((:) Variance CoV ((:) Variance CoV ((:) Variance CoV ((:) Variance CoV ([] Variance)))))) | |
MFunctor (* -> * -> * -> * -> *) (,,,) ((:) * (a -> a') ((:) * (b -> b') ((:) * (c -> c') ((:) * (d -> d') ([] *))))) ((:) Variance CoV ((:) Variance CoV ((:) Variance CoV ((:) Variance CoV ([] Variance))))) | |
MFunctor (* -> * -> * -> *) (,,) ((:) * (a -> a') ((:) * (b -> b') ((:) * (c -> c') ([] *)))) ((:) Variance CoV ((:) Variance CoV ((:) Variance CoV ([] Variance)))) | |
MFunctor (* -> * -> *) (->) ((:) * (a' -> a) ((:) * (b -> b') ([] *))) ((:) Variance ContraV ((:) Variance CoV ([] Variance))) | |
MFunctor (* -> * -> *) Either ((:) * (a -> a') ((:) * (b -> b') ([] *))) ((:) Variance CoV ((:) Variance CoV ([] Variance))) | |
MFunctor (* -> * -> *) (,) ((:) * (a -> a') ((:) * (b -> b') ([] *))) ((:) Variance CoV ((:) Variance CoV ([] Variance))) | |
MFunctor (* -> *) [] ((:) * (a -> a') ([] *)) ((:) Variance CoV ([] Variance)) | |
MFunctor (* -> *) Sum ((:) * (a -> b) ([] *)) ((:) Variance CoV ([] Variance)) | |
MFunctor (* -> *) Product ((:) * (a -> b) ([] *)) ((:) Variance CoV ([] Variance)) | |
MFunctor (* -> *) First ((:) * (a -> b) ([] *)) ((:) Variance CoV ([] Variance)) | |
MFunctor (* -> *) Last ((:) * (a -> b) ([] *)) ((:) Variance CoV ([] Variance)) | |
MFunctor (* -> *) Maybe ((:) * (a -> a') ([] *)) ((:) Variance CoV ([] Variance)) |
mmap :: forall a b f fs vs. (Unapply a f (Domains fs vs), Unapply b f (Codomains fs vs), MFunctor f fs vs) => HList fs -> a -> b Source
class GFMFunctor f fs vs where Source
(GFPMFunctor [Variance] n fs vs, (~) * ((:!:) fs n) ((:!:) (Domains fs vs) n -> (:!:) (Codomains fs vs) n)) => GFMFunctor (FP * n) fs vs | |
GFMFunctor (FK * a) fs vs | |
(MFunctor k f (ExpandFieldFunction as vs' ps vs) vs', (~) [*] (ExpandField as (Codomains ps vs)) (Codomains (ExpandFieldFunction as vs' ps vs) vs'), (~) [*] (ExpandField as (Domains ps vs)) (Domains (ExpandFieldFunction as vs' ps vs) vs'), AdaptFieldFunction as vs' ps vs) => GFMFunctor ((:@:) * k f as) ps vs |
class GFPMFunctor n fs vs where Source
GFPMFunctor [k] NZ ((:) * (a -> b) as) ((:) k v vs) | |
GFPMFunctor [Variance] n as vs => GFPMFunctor [Variance] (NS n) ((:) * (a -> b) as) ((:) Variance ContraV vs) | |
GFPMFunctor [Variance] n as vs => GFPMFunctor [Variance] (NS n) ((:) * (a -> b) as) ((:) Variance CoV vs) |
type family ExpandFieldFunction f vfs ps vs :: [*] Source
ExpandFieldFunction [] [] ps vs = [] | |
ExpandFieldFunction (FK a : fs) (v : vfs) ps vs = (a -> a) : ExpandFieldFunction fs vfs ps vs | |
ExpandFieldFunction (FP n : fs) (CoV : vfs) ps vs = (ps :!: n) : ExpandFieldFunction fs vfs ps vs | |
ExpandFieldFunction (FP n : fs) (ContraV : vfs) ps vs = (ps :!: n) : ExpandFieldFunction fs vfs ps vs | |
ExpandFieldFunction ((f :@: as) : fs) (CoV : vfs) ps vs = ((f :$: ExpandField as (Domains ps vs)) -> f :$: ExpandField as (Codomains ps vs)) : ExpandFieldFunction fs vfs ps vs | |
ExpandFieldFunction ((f :@: as) : fs) (ContraV : vfs) ps vs = ((f :$: ExpandField as (Codomains ps vs)) -> f :$: ExpandField as (Domains ps vs)) : ExpandFieldFunction fs vfs ps vs |
class AdaptFieldFunction f vfs ps vs where Source
adaptFieldFunction :: Proxy f -> Proxy vfs -> Proxy vs -> HList ps -> HList (ExpandFieldFunction f vfs ps vs) Source
type family FlipVariance vs Source
FlipVariance [] = [] | |
FlipVariance (CoV : vs) = ContraV : FlipVariance vs | |
FlipVariance (ContraV : vs) = CoV : FlipVariance vs |