ghc-7.8.4: The GHC API

Safe Haskell | None
Language | Haskell98

TcEvidence

# Documentation

data HsWrapper

Constructors

WpHole |
WpCompose HsWrapper HsWrapper |
WpCast TcCoercion |
WpEvLam EvVar |
WpEvApp EvTerm |
WpTyLam TyVar |
WpTyApp KindOrType |
WpLet TcEvBinds |

Instances

Data HsWrapper |
Outputable HsWrapper |
Typeable * HsWrapper |

(<.>) :: HsWrapper -> HsWrapper -> HsWrapper

mkWpTyApps :: [Type] -> HsWrapper

mkWpEvApps :: [EvTerm] -> HsWrapper

mkWpEvVarApps :: [EvVar] -> HsWrapper

mkWpTyLams :: [TyVar] -> HsWrapper

mkWpLams :: [Var] -> HsWrapper

mkWpLet :: TcEvBinds -> HsWrapper

mkWpCast :: TcCoercion -> HsWrapper

idHsWrapper :: HsWrapper

isIdHsWrapper :: HsWrapper -> Bool

pprHsWrapper :: SDoc -> HsWrapper -> SDoc

data TcEvBinds

Constructors

TcEvBinds EvBindsVar |
EvBinds (Bag EvBind) |

Instances

Data TcEvBinds |
Outputable TcEvBinds |
Typeable * TcEvBinds |

data EvBindsVar

Constructors

EvBindsVar (IORef EvBindMap) Unique |

Instances

Outputable EvBindsVar |

newtype EvBindMap

Constructors

EvBindMap |

Fields

ev_bind_varenv :: VarEnv EvBind

emptyEvBindMap :: EvBindMap

extendEvBinds :: EvBindMap -> EvVar -> EvTerm -> EvBindMap

lookupEvBind :: EvBindMap -> EvVar -> Maybe EvBind

evBindMapBinds :: EvBindMap -> Bag EvBind

data EvBind

Constructors

EvBind EvVar EvTerm |

Instances

Outputable EvBind |

emptyTcEvBinds :: TcEvBinds

isEmptyTcEvBinds :: TcEvBinds -> Bool

data EvTerm

Constructors

EvId EvId |
EvCoercion TcCoercion |
EvCast EvTerm TcCoercion |
EvDFunApp DFunId [Type] [EvTerm] |
EvTupleSel EvTerm Int |
EvTupleMk [EvTerm] |
EvDelayedError Type FastString |
EvSuperClass EvTerm Int |
EvLit EvLit |

Instances

Data EvTerm |
Outputable EvTerm |
Typeable * EvTerm |

mkEvCast :: EvTerm -> TcCoercion -> EvTerm

evVarsOfTerm :: EvTerm -> VarSet

data EvLit

Constructors

EvNum Integer |
EvStr FastString |

Instances

Data EvLit |
Outputable EvLit |
Typeable * EvLit |

evTermCoercion :: EvTerm -> TcCoercion

data TcCoercion

Constructors

TcRefl Role TcType |
TcTyConAppCo Role TyCon [TcCoercion] |
TcAppCo TcCoercion TcCoercion |
TcForAllCo TyVar TcCoercion |
TcCoVarCo EqVar |
TcAxiomInstCo (CoAxiom Branched) Int [TcCoercion] |
TcAxiomRuleCo CoAxiomRule [TcType] [TcCoercion] |
TcPhantomCo TcType TcType |
TcSymCo TcCoercion |
TcTransCo TcCoercion TcCoercion |
TcNthCo Int TcCoercion |
TcLRCo LeftOrRight TcCoercion |
TcSubCo TcCoercion |
TcCastCo TcCoercion TcCoercion |
TcLetCo TcEvBinds TcCoercion |

Instances

Data TcCoercion |
Outputable TcCoercion |
Typeable * TcCoercion |

data LeftOrRight

Constructors

CLeft |
CRight |

Instances

Eq LeftOrRight |
Data LeftOrRight |
Outputable LeftOrRight |
Binary LeftOrRight |
Typeable * LeftOrRight |

pickLR :: LeftOrRight -> (a, a) -> a

mkTcReflCo :: Role -> TcType -> TcCoercion

mkTcNomReflCo :: TcType -> TcCoercion

mkTcTyConAppCo :: Role -> TyCon -> [TcCoercion] -> TcCoercion

mkTcAppCo :: TcCoercion -> TcCoercion -> TcCoercion

mkTcAppCos :: TcCoercion -> [TcCoercion] -> TcCoercion

mkTcFunCo :: Role -> TcCoercion -> TcCoercion -> TcCoercion

mkTcAxInstCo :: Role -> CoAxiom br -> Int -> [TcType] -> TcCoercion

mkTcUnbranchedAxInstCo :: Role -> CoAxiom Unbranched -> [TcType] -> TcCoercion

mkTcForAllCo :: Var -> TcCoercion -> TcCoercion

mkTcForAllCos :: [Var] -> TcCoercion -> TcCoercion

mkTcSymCo :: TcCoercion -> TcCoercion

mkTcTransCo :: TcCoercion -> TcCoercion -> TcCoercion

mkTcNthCo :: Int -> TcCoercion -> TcCoercion

mkTcLRCo :: LeftOrRight -> TcCoercion -> TcCoercion

mkTcSubCo :: TcCoercion -> TcCoercion

mkTcAxiomRuleCo :: CoAxiomRule -> [TcType] -> [TcCoercion] -> TcCoercion

tcCoercionKind :: TcCoercion -> Pair Type

coVarsOfTcCo :: TcCoercion -> VarSet

isEqVar :: Var -> Bool

mkTcCoVarCo :: EqVar -> TcCoercion

isTcReflCo :: TcCoercion -> Bool

isTcReflCo_maybe :: TcCoercion -> Maybe TcType

getTcCoVar_maybe :: TcCoercion -> Maybe CoVar

tcCoercionRole :: TcCoercion -> Role

eqVarRole :: EqVar -> Role

coercionToTcCoercion :: Coercion -> TcCoercion