simonpj 2003/04/16 06:34:17 PDT
Modified files:
ghc/compiler/typecheck Inst.lhs TcBinds.lhs TcExpr.hi-boot-6
TcExpr.lhs TcForeign.lhs TcMType.lhs
TcMatches.hi-boot-6 TcMatches.lhs
TcPat.lhs TcRnDriver.lhs TcRules.lhs
TcSplice.lhs TcType.lhs TcUnify.lhs
Log:
----------------------------------
Use the Infer/Check idea for typechecking higher-rank types
----------------------------------
The main idea is that
data Expected ty = Infer (TcRef ty) | Check ty
tcMonoExpr :: Expr -> Expected TcRhoType -> TcM Expra
This "Expected" type tells tcMonoExpr whether it's doing inference or
checking. It replaces the "HoleTv" flavour of type variable.
This actually leads to slightly more lines of code, but it's much
clearer, and the new type distinctions showed up several subtle bugs
in the previous implementation. It all arose out of writing the
prototype implementation for the paper.
Error messages wibble around a little bit. I'm not quite certain why! But
the
changes look like improvements to me.
Revision Changes Path
1.117 +7 -11 fptools/ghc/compiler/typecheck/Inst.lhs
1.116 +21 -23 fptools/ghc/compiler/typecheck/TcBinds.lhs
1.5 +7 -2 fptools/ghc/compiler/typecheck/TcExpr.hi-boot-6
1.151 +106 -105 fptools/ghc/compiler/typecheck/TcExpr.lhs
1.60 +2 -2 fptools/ghc/compiler/typecheck/TcForeign.lhs
1.45 +2 -40 fptools/ghc/compiler/typecheck/TcMType.lhs
1.5 +3 -3 fptools/ghc/compiler/typecheck/TcMatches.hi-boot-6
1.75 +95 -63 fptools/ghc/compiler/typecheck/TcMatches.lhs
1.88 +63 -48 fptools/ghc/compiler/typecheck/TcPat.lhs
1.32 +3 -4 fptools/ghc/compiler/typecheck/TcRnDriver.lhs
1.45 +4 -3 fptools/ghc/compiler/typecheck/TcRules.lhs
1.21 +7 -7 fptools/ghc/compiler/typecheck/TcSplice.lhs
1.88 +2 -16 fptools/ghc/compiler/typecheck/TcType.lhs
1.46 +222 -168 fptools/ghc/compiler/typecheck/TcUnify.lhs
|
Try Searching:
servers, voip, java, networking, microsoft ...
|
|
|
|