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


Ignore:
Timestamp:
Sep 20, 2013 10:53:38 AM (23 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 ===