ghc-8.0.0.20160111: The GHC API

Safe HaskellNone
LanguageHaskell2010

TmOracle

Synopsis

Documentation

data PmExpr Source

Lifted expressions for pattern match checking.

data PmLit Source

Literals (simple and overloaded ones) for pattern match checking.

Constructors

PmSLit HsLit 
PmOLit Bool (HsOverLit Id) 

Instances

type SimpleEq = (Id, PmExpr) Source

Term equalities

type PmVarEnv = Map Id PmExpr Source

The type of substitutions.

canDiverge :: Id -> TmState -> Bool Source

Check whether a constraint (x ~ BOT) can succeed, given the resulting state of the term oracle.

eqPmLit :: PmLit -> PmLit -> Bool Source

Equality between literals for pattern match checking.

filterComplex :: [ComplexEq] -> [PmNegLitCt] Source

isNotPmExprOther :: PmExpr -> Bool Source

Check if an expression is lifted or not

runPmPprM :: PmPprM a -> [PmNegLitCt] -> (a, [(SDoc, [PmLit])]) Source

tmOracle :: TmState -> [ComplexEq] -> Maybe TmState Source

External interface to the term oracle.

type TmState = ([ComplexEq], TmOracleEnv) Source

The state of the term oracle (includes complex constraints that cannot progress unless we get more information).

initialTmState :: TmState Source

Initial state of the oracle.

exprDeepLookup :: PmVarEnv -> PmExpr -> PmExpr Source

Apply an (un-flattened) substitution to an expression.

pmLitType :: PmLit -> Type Source

Type of a PmLit

flattenPmVarEnv :: PmVarEnv -> PmVarEnv Source

Flatten the DAG (Could be improved in terms of performance.).