Commit 4c658451 authored by's avatar

Comments only

Mon Sep 18 17:43:31 EDT 2006  Manuel M T Chakravarty <>
  * Comments only
  Wed Aug  9 04:45:19 EDT 2006
    * Comments only
parent 7676e57a
......@@ -84,9 +84,7 @@ data HsBind id
-- (with a free type variable a'). The coercion will take
-- a CoreExpr of this type and convert it to a CoreExpr of
-- type Int -> forall a'. a' -> a'
-- Notice that the coercion captures the free a'. That's
-- why coercions are (CoreExpr -> CoreExpr), rather than
-- just CoreExpr (with a functional type)
-- Notice that the coercion captures the free a'.
bind_fvs :: NameSet -- After the renamer, this contains a superset of the
-- Names of the other binders in this binding group that
......@@ -193,7 +193,7 @@ data Type
| PredTy -- The type of evidence for a type predictate
PredType -- Can be expanded to a representation type.
PredType -- See Note [PredTy], and Note [Equality predicates]
-- NB: A PredTy (EqPred _ _) can appear only as the kind
-- of a coercion variable; never as the argument or result
-- of a FunTy (unlike ClassP, IParam)
......@@ -219,7 +219,7 @@ data TyNote = FTVNote TyVarSet -- The free type variables of the noted expressio
Source types
Note [PredTy]
A type of the form
PredTy p
......@@ -259,6 +259,24 @@ The predicate really does turn into a real extra argument to the
function. If the argument has type (PredTy p) then the predicate p is
represented by evidence (a dictionary, for example, of type (predRepTy p).
Note [Equality predicates]
forall a b. (a :=: S b) => a -> b
could be represented by
ForAllTy a (ForAllTy b (FunTy (PredTy (EqPred a (S b))) ...))
ForAllTy a (ForAllTy b (ForAllTy (c::PredTy (EqPred a (S b))) ...))
The latter is what we do. (Unlike for class and implicit parameter
constraints, which do use FunTy.)
* FunTy is always a *value* function
* ForAllTy is discarded at runtime
We often need to make a "wildcard" (c::PredTy..). We always use the same
name (wildCoVarName), since it's not mentioned.
%* *
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment