Comment changes to satisfy Haddock
authorSimon Peyton Jones <simonpj@microsoft.com>
Wed, 20 Apr 2011 11:58:37 +0000 (12:58 +0100)
committerSimon Peyton Jones <simonpj@microsoft.com>
Wed, 20 Apr 2011 11:58:37 +0000 (12:58 +0100)
compiler/basicTypes/DataCon.lhs
compiler/types/TypeRep.lhs

index fae899d..5e35984 100644 (file)
@@ -300,7 +300,7 @@ data DataCon
                -- the context constrains only universally quantified variables
                --      MkT :: forall a b. (a ~ b, Ord b) => a -> T a b
        dcOtherTheta :: ThetaType,  -- The other constraints in the data con's type
-                                   -- *other than* those in the dcEqSpec
+                                   -- other than those in the dcEqSpec
 
        dcStupidTheta :: ThetaType,     -- The context of the data type declaration 
                                        --      data Eq a => T a = ...
index 446341d..c12f9c8 100644 (file)
@@ -145,11 +145,12 @@ data Type
                        --    can appear as the right hand side of a type synonym.
 
   | FunTy
-       Type
+       Type            
        Type            -- ^ Special case of 'TyConApp': @TyConApp FunTyCon [t1, t2]@
+                       -- See Note [Equality-constrained types]
 
   | ForAllTy
-       TyCoVar         -- ^ Type *or* coercion variable; see Note [Equality-constrained types]
+       TyCoVar         -- Type variable
        Type            -- ^ A polymorphic type
 
   | PredTy
@@ -183,21 +184,9 @@ The type   forall ab. (a ~ [b]) => blah
 is encoded like this:
 
    ForAllTy (a:*) $ ForAllTy (b:*) $
-   ForAllTy (wild_co : a ~ [b]) $
+   FunTy (PredTy (EqPred a [b]) $
    blah
 
-That is, the "(a ~ [b]) =>" part is encode as a for-all
-type with a coercion variable that is never mentioned.
-
-We could instead have used a FunTy with an EqPred on the 
-left.  But we want 
-
-  * FunTy to mean RUN-TIME abstraction,
-    passing a real value at runtime, 
-
-  * ForAllTy to mean COMPILE-TIME abstraction, 
-    erased at runtime
-
 -------------------------------------
                Note [PredTy]