Changes between Version 3 and Version 4 of Commentary/Compiler/TypeChecker


Ignore:
Timestamp:
Sep 20, 2013 10:53:38 AM (7 months ago)
Author:
simonpj
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Commentary/Compiler/TypeChecker

    v3 v4  
    88 
    99== The Overall Flow of Things == 
     10 
     11 * `TcRnDriver` is the top level.  It calls 
     12   * `TcTyClsDecls`: type and class declaration 
     13   * `TcInstDcls`: instance declarations 
     14   * `TcBinds`: value bindings 
     15     * `TcExpr`: expressions 
     16     * `TcMatches`: lambda, case, list comprehensions 
     17     * `TcPat`: patterns 
     18   * `TcForeign`: FFI declarations 
     19   * `TcRules`: rewrite rules 
     20   * `TcHsTypes`: kind-checking type signatures 
     21   * `TcValidity`: a second pass that walks over things like types or type constructors, checking a number of extra side conditions. 
     22 
     23 * The constraint solver consists of: 
     24   * `TcSimplify`: top level of the constraint solver 
     25   * `TcCanonical`: canonicalising constraints 
     26   * `TcInteract`: solving constraints where they interact with each other 
     27   * `TcTypeNats`: solving natural-number constraints 
     28   * `TcSMonad`: the monad of the constraint solver (built on top of the main typechecker monad) 
     29   * `TcEvidence`: the data types used for evidence (mostly pure) 
     30   * `TcUnify`: solves unification constraints "on the fly"; if it can't, it generates a constraint for the  
     31constraint solver to deal with later 
     32   * `TcErrors`: generates good error messages from the residual, unsolved constraints. 
     33 
     34 * Underlying infrastructure: 
     35   * `TcRnTypes`: a big collection of the types used during type checking 
     36   * `TcRnMonad`: the main typechecker monad 
     37   * `TcType`: pure functions over types, used by the type checker 
     38    
     39 
    1040 
    1141=== Entry Points Into the Type Checker ===