Changes between Version 11 and Version 12 of GhciDebugger


Ignore:
Timestamp:
Dec 1, 2006 2:58:49 PM (8 years ago)
Author:
mnislaih
Comment:

Fix "compensating wrapper constructors"

Legend:

Unmodified
Added
Removed
Modified
  • GhciDebugger

    v11 v12  
    102102 
    103103=== Compensating Wrapper Constructors === 
    104 Worker and Wrapper constructors are a potential headache. The arguments list gets extended with: 
    105  * Existential Dictionaries 
    106  * Type equality coercions (?) 
     104Worker and Wrapper constructors are a potential headache for two reasons, extra arguments and variations on the final type.  
     105 
     106The arguments list gets extended with: 
     107 * Existential Dictionaries (?) 
    107108 * Type Class dictionaries 
    108  
    109 In addition, the types of the arguments may change too, but that is not a problem in our case. We always consider the processed types, not the original ones, since what we are going to find in the heap corresponds to the former.  
    110  
    111 So to recap, all what is being done to compensate is drop the first (n - m) arguments where: 
     109 * any other ? 
     110 
     111To compensate it suffices to drop the first (m - n) (pointed) pointers of a closure, where: 
    112112 * n - # arguments of the original constructor 
    113113 * m - # arguments of the wrapper constructor, if any, or worker constructor 
     114 
     115In addition, the types of the arguments may change, so the closure viewer always consider the final types, not the original ones, since the closure viewer deals with the heap representation of values. 
    114116 
    115117=== About handling suspensions in the interactive environment ===