|
|
# GHC Source Code Abbreviations
|
|
|
|
|
|
Certain abbreviations are used pervasively throughout the GHC source code. A few, like "Tc", are easy to figure out. Others, like "Occ", are more challenging (in case you were wondering, none of GHC's code is [ Occult](http://en.wikipedia.org/wiki/Occult), except perhaps in the Latin sense)
|
|
|
|
|
|
Certain abbreviations are used pervasively throughout the GHC source code. This page gives a partial list of them and their expansion:
|
|
|
|
|
|
See also: [ A similar list on the GHC Users' wiki](http://www.haskell.org/haskellwiki/GHC/List_of_abbreviations).
|
|
|
- **ANF**: A-normal form
|
|
|
|
|
|
- "Occ" means "Occurrence"
|
|
|
- **Class**: Type Class
|
|
|
|
|
|
- **Cmm**: The final IR used in GHC, based on the C-- language
|
|
|
|
|
|
- **Core**: GHC core language. Based on System FC (variant of System F). Represents a type-checked and desugared program in some (out of several) intermediate compilation step
|
|
|
|
|
|
- **!CoreFV**: Free variables in core
|
|
|
|
|
|
- **CoreLint**: Type and sanity-checking of core. (Lint: Jargon for a program analysis that looks for bug-suspicious code.)
|
|
|
|
|
|
- **CoreSubst**: Substitution in core
|
|
|
|
|
|
- **CoreSyn**: Core abstract syntax
|
|
|
|
|
|
- **DataCon**: Data constructor
|
|
|
|
|
|
- **Ds**: Desugarer
|
|
|
|
|
|
- **Gbl**: Global
|
|
|
|
|
|
- **Hs**: Haskell Syntax (generally as opposed to Core, for example, Expr vs HsExpr)
|
|
|
|
|
|
- **Hsc**: Haskell compiler. Means it Deals with compiling a single module and no more.
|
|
|
|
|
|
- **HsSyn**: Haskell abstract syntax
|
|
|
|
|
|
- **Id**: Synonym for Var, but indicating a term variable
|
|
|
|
|
|
- **Iface**: Interface, as in Haskell interface (.hi) files
|
|
|
|
|
|
- **IfaceSyn**: Interface abstract syntax
|
|
|
|
|
|
- **LHs**: Located Haskell something
|
|
|
|
|
|
- **Loc**: Location, as in SrcLoc
|
|
|
|
|
|
- **Located**: Something annotated with a SrcSpan
|
|
|
|
|
|
- **Lcl**: Local
|
|
|
|
|
|
- **!nativeGen**: Native code generator (generates assembly from Cmm)
|
|
|
|
|
|
- **Occ**: Occurrence
|
|
|
|
|
|
- However, in the context of [ OccName](http://hackage.haskell.org/trac/ghc/wiki/Commentary/Compiler/RdrNameType#TheOccNametype), "occurrence" actually means "classified (i.e. as a type name, value name, etc) but not qualified and not yet resolved"
|
|
|
|
|
|
- "Rn" means "Renamer"
|
|
|
- **PId**: Package ID
|
|
|
|
|
|
- **PprCore**: Pretty-printing core
|
|
|
|
|
|
- **Rdr**: Parser (or reader)
|
|
|
|
|
|
- **Rn**: Rename or Renamer
|
|
|
|
|
|
- "Rts" means "Run Time System"
|
|
|
- **Rts**: Run Time System
|
|
|
|
|
|
- "Rdr" means "Parser" (or reader)
|
|
|
- **SimplCore**: Simplify core (the so-called simplifier belongs to this, as does the strictness analyser)
|
|
|
|
|
|
- "Ds" means "Desugarer"
|
|
|
- **SrcLoc**: Source location (filename, line number, character position)
|
|
|
|
|
|
- "Tc" means "TypeCheck{ing,er}"
|
|
|
- **SrcSpan**: Source location span (filename, start line number and character position, end line number and character position)
|
|
|
|
|
|
- "Ty" means "Type"
|
|
|
- **Tc**: TypeCheck{ing,er}
|
|
|
|
|
|
- "Lcl" means "Local"
|
|
|
- **TyCon**: Type constructor
|
|
|
|
|
|
- "Gbl" means "Global"
|
|
|
- **TyThing**: Something that is type-checkable
|
|
|
|
|
|
- "Loc" means "Location", as in SrcLoc
|
|
|
- **Ty**: Type
|
|
|
|
|
|
- "Hs" means "Haskell Syntax" (generally as opposed to Core -- for example, Expr vs HsExpr)
|
|
|
- **TyVar**: Synonym for Var, but indicating a type variable
|
|
|
|
|
|
- "Hsc" means "deals with compiling a single module and no more" |
|
|
- **Var**: A variable with some information about its type (or kind) |