yoko-0.2: generic programming with disbanded constructors

Portabilitysee LANGUAGE pragmas (... GHC)
Stabilityexperimental
Maintainernicolas.frisby@gmail.com

Data.Yoko.Core

Description

The core structural types; "sum of products" and such.

Synopsis

Documentation

type family Rep a Source

Structural representations (e.g. Data.Yoko.Generic's RM) of a * type can be derived as a data family indexed by the core representation (Rep) of that type.

data V Source

void

Instances

V ::: (All u) 
V ::: (Domain (CMap fn m)) 
Applicative (Idiom (fn m)) => V ::: (DomainA (CMap fn m)) 
Eq (RM m V) 
Show (RM m V) 

data U Source

unit

Constructors

U 

Instances

U ::: (Domain (RMMap u fn m)) 
U ::: (Domain (CMap fn m)) 
Applicative (Idiom (fn m)) => U ::: (DomainA (CMap fn m)) 

newtype D a Source

a dependency

Constructors

D a 

Instances

(D a) ::: (Domain (RMMap u fn m)) 
Applicative (Idiom (fn m)) => (D a) ::: (DomainA (CMap fn m)) 
(D a) ::: (Domain (CMap fn m)) 

newtype R t Source

a recursive occurrence

Constructors

R t 

Instances

(Dom (fn m) t ~ Med m t, Rng (fn m) t ~ Med (MApp fn m) t, t ::: u, t ::: (Domain (fn m)), Wrapper (fn m)) => (R t) ::: (Domain (RMMap u fn m)) 
(Dom (fn m) t ~ Med m t, Rng (fn m) t ~ Med m (TApp (fn m) t), t ::: (DomainA (fn m)), Functor (Idiom (fn m)), Wrapper (fn m)) => (R t) ::: (DomainA (CMap fn m)) 
(Dom (fn m) t ~ Med m t, Rng (fn m) t ~ Med m (TApp (fn m) t), t ::: (Domain (fn m)), Wrapper (fn m)) => (R t) ::: (Domain (CMap fn m)) 
Eq (Med m t) => Eq (RM m (R t)) 
Show (Med m t) => Show (RM m (R t)) 

newtype F f c Source

argument to a * -> *

Constructors

F (f c) 

Instances

(Functor f, c ::: (Domain (RMMap u fn m))) => (F f c) ::: (Domain (RMMap u fn m)) 
(c ::: (DomainA (CMap fn m)), Applicative (Idiom (fn m)), Traversable f) => (F f c) ::: (DomainA (CMap fn m)) 
(c ::: (Domain (CMap fn m)), Traversable f) => (F f c) ::: (Domain (CMap fn m)) 

newtype FF ff c d Source

arguments to a * -> * -> *

Constructors

FF (ff c d) 

Instances

Eq (ff (RM m c) (RM m d)) => Eq (RM m (FF ff c d)) 
Show (ff (RM m c) (RM m d)) => Show (RM m (FF ff c d)) 
(c ::: (Domain (RMMap u fn m)), d ::: (Domain (RMMap u fn m)), FunctorTSTSS ff) => (FF ff c d) ::: (Domain (RMMap u fn m)) 
(c ::: (DomainA (CMap fn m)), d ::: (DomainA (CMap fn m)), Applicative (Idiom (fn m)), TraversableTSTSS ff) => (FF ff c d) ::: (DomainA (CMap fn m)) 
(c ::: (Domain (CMap fn m)), d ::: (Domain (CMap fn m)), FunctorTSTSS ff) => (FF ff c d) ::: (Domain (CMap fn m)) 

newtype M i c Source

meta information

Constructors

M c 

Instances

c ::: (Domain (RMMap u fn m)) => (M i c) ::: (Domain (RMMap u fn m)) 
(c ::: (DomainA (CMap fn m)), Functor (Idiom (fn m))) => (M i c) ::: (DomainA (CMap fn m)) 
c ::: (Domain (CMap fn m)) => (M i c) ::: (Domain (CMap fn m)) 

newtype N t Source

a named intermediate (user hook); crucially: type instance Rep (N t) = Rep t.

Constructors

N t 

Instances

AlgebraDC m dc => AlgebraUni m (N dc) 
t ::: u => (N t) ::: (All u) 
((Rep t) ::: (Domain (RMMap u fn m)), Generic t) => (N t) ::: (Domain (RMMap u fn m)) 
t ::: p => (N t) ::: (:? (Exists p) Here) 

type :* = FF (,)Source