ghc-7.10.1: The GHC API

Safe HaskellNone
LanguageHaskell2010

TcEvidence

Synopsis

Documentation

newtype EvBindMap

Constructors

EvBindMap 

data EvBind

Constructors

EvBind EvVar EvTerm 

Instances

data EvLit

Constructors

EvNum Integer 
EvStr FastString 

data EvTypeable

Instructions on how to make a Typeable dictionary.

Constructors

EvTypeableTyCon TyCon [Kind]

Dicitionary for concrete type constructors.

EvTypeableTyApp (EvTerm, Type) (EvTerm, Type)

Dictionary for type applications; this is used when we have a type expression starting with a type variable (e.g., Typeable (f a))

EvTypeableTyLit Type

Dictionary for a type literal.

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

maybeTcSubCo :: EqRel -> TcCoercion -> TcCoercion

If the EqRel is ReprEq, makes a TcSubCo; otherwise, does nothing. Note that the input coercion should always be nominal.

tcDowngradeRole

Arguments

:: Role

desired role

-> Role

current role

-> TcCoercion 
-> TcCoercion 

Change the role of a TcCoercion. Panics if this isn't a downgrade.

mkTcTransAppCo

Arguments

:: Role

r1

-> TcCoercion

co1 :: ty1a ~r1 ty1b

-> TcType

ty1a

-> TcType

ty1b

-> Role

r2

-> TcCoercion

co2 :: ty2a ~r2 ty2b

-> TcType

ty2a

-> TcType

ty2b

-> Role

r3

-> TcCoercion

:: ty1a ty2a ~r3 ty1b ty2b

Like mkTcAppCo, but allows the second coercion to be other than nominal. See Note [mkTcTransAppCo]. Role r3 cannot be more stringent than either r1 or r2.