Changes between Version 2 and Version 3 of ModuleDependencies


Ignore:
Timestamp:
May 17, 2006 2:57:14 PM (9 years ago)
Author:
guest
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • ModuleDependencies

    v2 v3  
    1 The Marvellous Module Structure of GHC 
     1The Marvellous Module Structure of GHC (possibly outdated, please fix anything that is wrong) 
    22 
    33GHC is built out of about 245 Haskell modules. It can be quite tricky to figure out what the module dependency graph looks like. It can be important, too, because loops in the module dependency graph need to be broken carefully using .hi-boot interface files. 
     
    55This section of the commentary documents the subtlest part of the module dependency graph, namely the part near the bottom. 
    66 
    7     * The list is given in compilation order: that is, module near the top are more primitive, and are compiled earlier. 
    8     * Each module is listed together with its most critical dependencies in parentheses; that is, the dependencies that prevent it being compiled earlier. 
    9     * Modules in the same bullet don't depend on each other. 
    10     * Loops are documented by a dependency such as "loop Type.Type". This means tha the module imports Type.Type, but module Type has not yet been compiled, so the import comes from Type.hi-boot.  
     7 * The list is given in compilation order: that is, module near the top are more primitive, and are compiled earlier. 
     8 * Each module is listed together with its most critical dependencies in parentheses; that is, the dependencies that prevent it being compiled earlier. 
     9 * Modules in the same bullet don't depend on each other. 
     10 * Loops are documented by a dependency such as "loop Type.Type". This means tha the module imports Type.Type, but module Type has not yet been compiled, so the import comes from Type.hi-boot.  
    1111 
    1212Compilation order is as follows: 
    1313 
    1414 * First comes a layer of modules that have few interdependencies, and which implement very basic data types: 
    15            * Util 
    16            * OccName 
    17            * Pretty 
    18            * Outputable 
    19            * StringBuffer 
    20            * ListSetOps 
    21            * Maybes 
    22            * etc  
     15   * Util 
     16   * OccName 
     17   * Pretty 
     18   * Outputable 
     19   * StringBuffer 
     20   * ListSetOps 
     21   * Maybes 
     22   * etc  
    2323 
    2424    * Now comes the main subtle layer, involving types, classes, type constructors identifiers, expressions, rules, and their operations.