|
|
|
Description |
Central data structures of the symbol table
|
|
Synopsis |
|
| | isExported :: IE -> Bool | | combIE :: IE -> IE -> IE | | patchIE :: IE -> IE | | | | data Info | = InfoClear | | InfoUsed Id [(IdKind, TokenId, PackedString, Pos)] | | InfoUsedClass Id [(IdKind, TokenId, PackedString, Pos)] (Map Id (PackedString, [Id], [(Id, Id)])) | | InfoData Id TokenId IE NewType DataKind | | InfoClass Id TokenId IE NewType [Id] [Id] (Map Id (PackedString, [Id], [(Id, Id)])) | | InfoVar Id TokenId IE (InfixClass TokenId, Int) NewType (Maybe Int) | | InfoConstr Id TokenId IE (InfixClass TokenId, Int) NewType [Maybe Id] Id | | InfoField Id TokenId IE [(Id, Int)] Id Id | | InfoMethod Id TokenId IE (InfixClass TokenId, Int) NewType (Maybe Int) Id | | InfoIMethod Id TokenId NewType (Maybe Int) Id | | InfoDMethod Id TokenId NewType (Maybe Int) Id | | InfoInstance Id PackedString NewType Id | | InfoName Id TokenId Int TokenId Bool |
|
| | clearI :: a -> Info | | isMethod :: Info -> Bool | | isData :: Info -> Bool | | isRealData :: Info -> Bool | | isRenamingFor :: Map Id Info -> Info -> NewType | | isDataUnBoxed :: Info -> Bool | | isField :: Info -> Bool | | isClass :: Info -> Bool | | isUsedClass :: Info -> Bool | | isConstr :: Info -> Bool | | depthI :: Info -> Maybe Int | | typeSynonymBodyI :: Info -> Maybe NewType | | updTypeSynonym :: Bool -> Int -> Info -> Info | | updNewType :: Bool -> Info -> Info | | newNT :: NewType -> Info -> Info | | ntI :: Info -> NewType | | maybeNtI :: Info -> Maybe NewType | | strictI :: Info -> [Bool] | | qDefI :: Info -> Bool | | uniqueI :: Info -> Id | | descI :: Info -> String | | tidI :: Info -> TokenId | | cmpTid :: TokenId -> Info -> Bool | | methodsI :: Info -> [(Id, Id)] | | instancesI :: Info -> Map Id (PackedString, [Id], [(Id, Id)]) | | superclassesI :: Info -> [Id] | | addInstanceI :: Id -> PackedString -> [Id] -> [(Id, Id)] -> Info -> Info | | joinInsts :: Map Id a -> Map Id a -> Map Id a | | constrsI :: Info -> [Id] | | updConstrsI :: Info -> [Id] -> Info | | fieldsI :: Info -> [Maybe Id] | | combInfo :: Info -> Info -> Info | | expI :: Info -> IE | | arityVI :: Info -> Int | | arityI :: Info -> Int | | arityIM :: Info -> Int | | fixityI :: Info -> (InfixClass TokenId, Int) | | belongstoI :: Info -> Id | | profI :: Info -> TokenId | | module Id | | data IdKind | | data TokenId | | data NewType | | | | data Pos |
|
|
Documentation |
|
data IE |
This is Interface Exports
defined in a lattice IEall
/ \
| IEsome
IEsel |
| IEabs
\ /
IEnone
IEall -> exported (with all constructors/fields/methods)
IEsome -> exported with selected constructors/fields/methods
IEabs -> exported abstractly (without constructors/fields/methods)
IEnone -> not exported
IEsel -> selected constructors/fields/methods
(is exported, despite defn below!)
| Constructors | IEnone | | IEsel | | IEsome | | IEabs | | IEall | |
| Instances | |
|
|
isExported :: IE -> Bool |
|
combIE :: IE -> IE -> IE |
|
patchIE :: IE -> IE |
Patch newtype for exports (Its constructor must always be in the
interface file, even if not visible in the importing module.)
|
|
data DataKind |
Constructors | DataTypeSynonym Bool Int | | DataNewType Bool [Id] | | Data Bool [Id] | | DataPrimitive Int | |
| Instances | |
|
|
data Info |
Given all the selector functions below, shouldn't these
constructors be record constructors? -SamB
| Constructors | InfoClear | | InfoUsed Id [(IdKind, TokenId, PackedString, Pos)] | | InfoUsedClass Id [(IdKind, TokenId, PackedString, Pos)] (Map Id (PackedString, [Id], [(Id, Id)])) | | InfoData Id TokenId IE NewType DataKind | | InfoClass Id TokenId IE NewType [Id] [Id] (Map Id (PackedString, [Id], [(Id, Id)])) | | InfoVar Id TokenId IE (InfixClass TokenId, Int) NewType (Maybe Int) | | InfoConstr Id TokenId IE (InfixClass TokenId, Int) NewType [Maybe Id] Id | | InfoField Id TokenId IE [(Id, Int)] Id Id | | InfoMethod Id TokenId IE (InfixClass TokenId, Int) NewType (Maybe Int) Id | | InfoIMethod Id TokenId NewType (Maybe Int) Id | | InfoDMethod Id TokenId NewType (Maybe Int) Id | | InfoInstance Id PackedString NewType Id | Only used in Export
| InfoName Id TokenId Int TokenId Bool | |
| Instances | |
|
|
clearI :: a -> Info |
|
isMethod :: Info -> Bool |
|
isData :: Info -> Bool |
|
isRealData :: Info -> Bool |
|
isRenamingFor :: Map Id Info -> Info -> NewType |
|
isDataUnBoxed :: Info -> Bool |
|
isField :: Info -> Bool |
|
isClass :: Info -> Bool |
|
isUsedClass :: Info -> Bool |
|
isConstr :: Info -> Bool |
|
depthI :: Info -> Maybe Int |
|
typeSynonymBodyI :: Info -> Maybe NewType |
|
updTypeSynonym :: Bool -> Int -> Info -> Info |
|
updNewType :: Bool -> Info -> Info |
Sets the unboxedness information in newtype info as given.
|
|
newNT :: NewType -> Info -> Info |
Sets the type information in variable info as given.
Is only applied to identifiers without types,i.e. never methods of any kind!
|
|
ntI :: Info -> NewType |
|
maybeNtI :: Info -> Maybe NewType |
|
strictI :: Info -> [Bool] |
|
qDefI :: Info -> Bool |
|
uniqueI :: Info -> Id |
|
descI :: Info -> String |
|
tidI :: Info -> TokenId |
|
cmpTid :: TokenId -> Info -> Bool |
|
methodsI :: Info -> [(Id, Id)] |
|
instancesI :: Info -> Map Id (PackedString, [Id], [(Id, Id)]) |
|
superclassesI :: Info -> [Id] |
Return identifiers of all superclasses of the class which is described
by given info.
|
|
addInstanceI :: Id -> PackedString -> [Id] -> [(Id, Id)] -> Info -> Info |
Add information about an instance to info of a class.
If information about this instance exists already in info, then info left
unchanged.
type constructor -> free type variables -> context -> class info -> class info
|
|
joinInsts :: Map Id a -> Map Id a -> Map Id a |
In joining two trees for describing instances the second one gets
precedence in case of conflict.
|
|
constrsI :: Info -> [Id] |
Determine constructors of a type from the info of the type
|
|
updConstrsI :: Info -> [Id] -> Info |
|
fieldsI :: Info -> [Maybe Id] |
|
combInfo :: Info -> Info -> Info |
|
expI :: Info -> IE |
|
arityVI :: Info -> Int |
arity without context (Visible)
|
|
arityI :: Info -> Int |
arity with context
|
|
arityIM :: Info -> Int |
|
fixityI :: Info -> (InfixClass TokenId, Int) |
|
belongstoI :: Info -> Id |
|
profI :: Info -> TokenId |
|
module Id |
|
data IdKind |
Instances | |
|
|
data TokenId |
Instances | |
|
|
data NewType |
Perhaps NewType is a type schema? It quantifies variables over
an arrow of NTs.
| Instances | |
|
|
data InfixClass a |
Constructors | InfixDef | | InfixL | | InfixR | | Infix | | InfixPre a | |
| Instances | |
|
|
data Pos |
abstract type for storing the position of a syntactic construct in a file,
that is, line and column number of both start and end positions.
| Instances | |
|
|
Produced by Haddock version 0.8 |