ghc-8.0.0.20160204: The GHC API

Safe HaskellNone
LanguageHaskell2010

CoAxiom

Description

Module for coercion axioms, used to represent type family instances and newtypes

Synopsis

Documentation

type Branched = Branched Source

type Unbranched = Unbranched Source

mapAccumBranches :: ([CoAxBranch] -> CoAxBranch -> CoAxBranch) -> Branches br -> Branches br Source

The [CoAxBranch] passed into the mapping function is a list of all previous branches, reversed

data CoAxiom br Source

A CoAxiom is a "coercion constructor", i.e. a named equality axiom.

Instances

Eq (CoAxiom br) 

Methods

(==) :: CoAxiom br -> CoAxiom br -> Bool

(/=) :: CoAxiom br -> CoAxiom br -> Bool

Typeable BranchFlag br => Data (CoAxiom br) 

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> CoAxiom br -> c (CoAxiom br) Source

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (CoAxiom br) Source

toConstr :: CoAxiom br -> Constr Source

dataTypeOf :: CoAxiom br -> DataType Source

dataCast1 :: Typeable (TYPE Lifted -> TYPE Lifted) t => (forall d. Data d => c (t d)) -> Maybe (c (CoAxiom br)) Source

dataCast2 :: Typeable (TYPE Lifted -> TYPE Lifted -> TYPE Lifted) t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (CoAxiom br)) Source

gmapT :: (forall b. Data b => b -> b) -> CoAxiom br -> CoAxiom br Source

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> CoAxiom br -> r Source

gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> CoAxiom br -> r Source

gmapQ :: (forall d. Data d => d -> u) -> CoAxiom br -> [u] Source

gmapQi :: Int -> (forall d. Data d => d -> u) -> CoAxiom br -> u Source

gmapM :: Monad m => (forall d. Data d => d -> m d) -> CoAxiom br -> m (CoAxiom br) Source

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> CoAxiom br -> m (CoAxiom br) Source

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> CoAxiom br -> m (CoAxiom br) Source

Ord (CoAxiom br) 

Methods

compare :: CoAxiom br -> CoAxiom br -> Ordering

(<) :: CoAxiom br -> CoAxiom br -> Bool

(<=) :: CoAxiom br -> CoAxiom br -> Bool

(>) :: CoAxiom br -> CoAxiom br -> Bool

(>=) :: CoAxiom br -> CoAxiom br -> Bool

max :: CoAxiom br -> CoAxiom br -> CoAxiom br

min :: CoAxiom br -> CoAxiom br -> CoAxiom br

Outputable (CoAxiom br) 

Methods

ppr :: CoAxiom br -> SDoc Source

pprPrec :: Rational -> CoAxiom br -> SDoc Source

Uniquable (CoAxiom br) 

Methods

getUnique :: CoAxiom br -> Unique Source

NamedThing (CoAxiom br) 

data CoAxBranch Source

Constructors

CoAxBranch 

Instances

Data CoAxBranch 

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> CoAxBranch -> c CoAxBranch Source

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c CoAxBranch Source

toConstr :: CoAxBranch -> Constr Source

dataTypeOf :: CoAxBranch -> DataType Source

dataCast1 :: Typeable (TYPE Lifted -> TYPE Lifted) t => (forall d. Data d => c (t d)) -> Maybe (c CoAxBranch) Source

dataCast2 :: Typeable (TYPE Lifted -> TYPE Lifted -> TYPE Lifted) t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c CoAxBranch) Source

gmapT :: (forall b. Data b => b -> b) -> CoAxBranch -> CoAxBranch Source

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> CoAxBranch -> r Source

gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> CoAxBranch -> r Source

gmapQ :: (forall d. Data d => d -> u) -> CoAxBranch -> [u] Source

gmapQi :: Int -> (forall d. Data d => d -> u) -> CoAxBranch -> u Source

gmapM :: Monad m => (forall d. Data d => d -> m d) -> CoAxBranch -> m CoAxBranch Source

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> CoAxBranch -> m CoAxBranch Source

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> CoAxBranch -> m CoAxBranch Source

Outputable CoAxBranch 

data Role Source

Instances

Eq Role 

Methods

(==) :: Role -> Role -> Bool

(/=) :: Role -> Role -> Bool

Data Role 

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Role -> c Role Source

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Role Source

toConstr :: Role -> Constr Source

dataTypeOf :: Role -> DataType Source

dataCast1 :: Typeable (TYPE Lifted -> TYPE Lifted) t => (forall d. Data d => c (t d)) -> Maybe (c Role) Source

dataCast2 :: Typeable (TYPE Lifted -> TYPE Lifted -> TYPE Lifted) t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Role) Source

gmapT :: (forall b. Data b => b -> b) -> Role -> Role Source

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Role -> r Source

gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Role -> r Source

gmapQ :: (forall d. Data d => d -> u) -> Role -> [u] Source

gmapQi :: Int -> (forall d. Data d => d -> u) -> Role -> u Source

gmapM :: Monad m => (forall d. Data d => d -> m d) -> Role -> m Role Source

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Role -> m Role Source

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Role -> m Role Source

Ord Role 

Methods

compare :: Role -> Role -> Ordering

(<) :: Role -> Role -> Bool

(<=) :: Role -> Role -> Bool

(>) :: Role -> Role -> Bool

(>=) :: Role -> Role -> Bool

max :: Role -> Role -> Role

min :: Role -> Role -> Role

Outputable Role 
Binary Role 

data CoAxiomRule Source

For now, we work only with nominal equality.

Constructors

CoAxiomRule 

Fields

Instances

Eq CoAxiomRule 
Data CoAxiomRule 

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> CoAxiomRule -> c CoAxiomRule Source

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c CoAxiomRule Source

toConstr :: CoAxiomRule -> Constr Source

dataTypeOf :: CoAxiomRule -> DataType Source

dataCast1 :: Typeable (TYPE Lifted -> TYPE Lifted) t => (forall d. Data d => c (t d)) -> Maybe (c CoAxiomRule) Source

dataCast2 :: Typeable (TYPE Lifted -> TYPE Lifted -> TYPE Lifted) t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c CoAxiomRule) Source

gmapT :: (forall b. Data b => b -> b) -> CoAxiomRule -> CoAxiomRule Source

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> CoAxiomRule -> r Source

gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> CoAxiomRule -> r Source

gmapQ :: (forall d. Data d => d -> u) -> CoAxiomRule -> [u] Source

gmapQi :: Int -> (forall d. Data d => d -> u) -> CoAxiomRule -> u Source

gmapM :: Monad m => (forall d. Data d => d -> m d) -> CoAxiomRule -> m CoAxiomRule Source

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> CoAxiomRule -> m CoAxiomRule Source

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> CoAxiomRule -> m CoAxiomRule Source

Ord CoAxiomRule 
Outputable CoAxiomRule 
Uniquable CoAxiomRule 

type Eqn = Pair Type Source

A more explicit representation for `t1 ~ t2`.

data BuiltInSynFamily Source

Constructors

BuiltInSynFamily 

Fields