ghc-7.4.1: The GHC API

Safe HaskellSafe-Infered

BasicTypes

Synopsis

Documentation

newtype IPName name Source

Constructors

IPName name 

Instances

Functor IPName 
Typeable1 IPName 
Eq name => Eq (IPName name) 
Data name => Data (IPName name) 
Outputable name => OutputableBndr (IPName name) 
Outputable name => Outputable (IPName name) 
Uniquable n => Uniquable (IPName n) 
Binary name => Binary (IPName name) 

ipNameName :: IPName name -> nameSource

mapIPName :: (a -> b) -> IPName a -> IPName bSource

data OverlapFlag Source

Constructors

NoOverlap

This instance must not overlap another

Fields

isSafeOverlap :: Bool
 
OverlapOk

Silently ignore this instance if you find a more specific one that matches the constraint you are trying to resolve

Example: constraint (Foo [Int]) instances (Foo [Int]) (Foo [a]) OverlapOk Since the second instance has the OverlapOk flag, the first instance will be chosen (otherwise its ambiguous which to choose)

Fields

isSafeOverlap :: Bool
 
Incoherent

Like OverlapOk, but also ignore this instance if it doesn't match the constraint you are trying to resolve, but could match if the type variables in the constraint were instantiated

Example: constraint (Foo [b]) instances (Foo [Int]) Incoherent (Foo [a]) Without the Incoherent flag, we'd complain that instantiating b would change which instance was chosen

Fields

isSafeOverlap :: Bool
 

data Boxity Source

Constructors

Boxed 
Unboxed 

data OccInfo Source

Identifier occurrence information

Constructors

NoOccInfo

There are many occurrences, or unknown occurences

IAmDead

Marks unused variables. Sometimes useful for lambda and case-bound variables.

OneOcc !InsideLam !OneBranch !InterestingCxt

Occurs exactly once, not inside a rule

IAmALoopBreaker !RulesOnly

This identifier breaks a loop of mutually recursive functions. The field marks whether it is only a loop breaker due to a reference in a rule

data EP a Source

Constructors

EP 

Fields

fromEP :: a
 
toEP :: a