ajhc-0.8.0.8: Haskell compiler that produce binary through C language

Safe HaskellNone

Ho.Type

Synopsis

Documentation

type SourceHash = HashSource

A SourceHash is the hash of a specific file, it is associated with a specific Module that said file implements.

type HoHash = HashSource

HoHash is a unique identifier for a ho file or library.

type ModuleGroup = ModuleSource

while a Module is a single Module associated with a single haskell source file, a ModuleGroup identifies a group of mutually recursive modules. Generally it is chosen from among the Modules making up the group, but the specific choice has no other meaning. We could use the HoHash, but for readability reasons when debugging it makes more sense to choose an arbitrary Module.

data CollectedHo Source

the collected information that is passed around this is not stored in any file, but is what is collected from the ho files.

Constructors

CollectedHo 

Fields

choExternalNames :: IdSet

this is a list of external names that are valid but that we may not know anything else about it is used to recognize invalid ids.

choCombinators :: IdMap Comb

these are the functions in Comb form.

choOrphanRules :: Rules

these are rules that may need to be retroactively applied to other modules

choHoMap :: Map ModuleGroup Ho

the hos

choLibDeps :: Map PackedString HoHash

libraries depended on

choHo :: Ho

these are caches of pre-computed values

choVarMap :: IdMap (Maybe E)

cache of variable substitution map

Instances

data HoHeader Source

The header contains basic information about the file, it should be enough to determine whether we can discard the file right away or consider it further.

Constructors

HoHeader 

Fields

hohVersion :: Int

the version of the file format. it comes first so we don't try to read data that may be in a different format.

hohHash :: HoHash

my sha1 id

hohName :: Either ModuleGroup (PackedString, Version)

the human readable name, either the ModuleGroup or the library name and version.

hohLibDeps :: [(PackedString, HoHash)]

library dependencies

hohArchDeps :: [(PackedString, PackedString)]

arch dependencies, these say whether the file is specialized for a given arch.

Instances

data HoIDeps Source

These are the dependencies needed to check if a ho file is up to date. it only appears in ho files as hl files do not have source code to check against or depend on anything but other libraries.

Constructors

HoIDeps 

Fields

hoIDeps :: Map SourceHash (Module, [(Module, SrcLoc)])

modules depended on indexed by a hash of the source.

hoDepends :: [(Module, SourceHash)]

Haskell Source files depended on

hoModDepends :: [HoHash]

Other objects depended on to be considered up to date.

hoModuleGroupNeeds :: [ModuleGroup]

library module groups needed

Instances

data HoLib Source

Constructors

HoLib 

Fields

hoModuleMap :: Map Module ModuleGroup

arbitrary metainformation such as library author, web site, etc.

hoReexports :: Map Module Module
 
hoModuleDeps :: Map ModuleGroup [ModuleGroup]
 
hoMetaInfo :: [(PackedString, PackedString)]
 

Instances

data HoTcInfo Source

data only needed for type checking.

Constructors

HoTcInfo 

data HoBuild Source

Constructors

HoBuild 

Fields

hoDataTable :: DataTable

Filled in by E generation

hoEs :: [(TVr, E)]
 
hoRules :: Rules
 

data Ho Source

Constructors

Ho 

Instances

hoEs_u :: ([(TVr' E, E)] -> [(TVr' E, E)]) -> HoBuild -> HoBuildSource