simonpj 2002/09/27 01:20:50 PDT
Modified files:
ghc/compiler/basicTypes NameSet.lhs
ghc/compiler/deSugar DsCCall.lhs DsExpr.lhs DsListComp.lhs
DsMeta.hs
ghc/compiler/hsSyn Convert.lhs HsBinds.lhs HsExpr.lhs
HsSyn.lhs
ghc/compiler/main MkIface.lhs
ghc/compiler/parser Lex.lhs ParseUtil.lhs Parser.y
ghc/compiler/prelude PrelInfo.lhs PrelNames.lhs
ghc/compiler/rename RnBinds.lhs RnEnv.lhs RnExpr.lhs
RnNames.lhs RnSource.hi-boot-5
RnSource.hi-boot-6 RnSource.lhs
RnTypes.lhs
ghc/compiler/typecheck TcClassDcl.lhs TcGenDeriv.lhs
TcHsSyn.lhs TcMType.lhs TcMatches.lhs
TcRnDriver.lhs TcRules.lhs
TcTyClsDecls.lhs
ghc/compiler/utils Digraph.lhs Outputable.lhs
Log:
--------------------------------
Implement recursive do-notation
--------------------------------
This commit adds recursive do-notation, which Hugs has had for some time.
mdo { x <- foo y ;
y <- baz x ;
return (y,x) }
turns into
do { (x,y) <- mfix (\~(x,y) -> do { x <- foo y;
y <- baz x }) ;
return (y,x) }
This is all based on work by Levent Erkok and John Lanuchbury.
The really tricky bit is in the renamer (RnExpr.rnMDoStmts) where
we break things up into minimal segments. The rest is easy, including
the type checker.
Levent laid the groundwork, and Simon finished it off. Needless to say,
I couldn't resist tidying up other stuff, so there's no guaranteed I
have not broken something.
Revision Changes Path
1.7 +7 -0 fptools/ghc/compiler/basicTypes/NameSet.lhs
1.60 +4 -6 fptools/ghc/compiler/deSugar/DsCCall.lhs
1.88 +59 -14 fptools/ghc/compiler/deSugar/DsExpr.lhs
1.38 +6 -6 fptools/ghc/compiler/deSugar/DsListComp.lhs
1.4 +2 -2 fptools/ghc/compiler/deSugar/DsMeta.hs
1.4 +1 -1 fptools/ghc/compiler/hsSyn/Convert.lhs
1.64 +8 -8 fptools/ghc/compiler/hsSyn/HsBinds.lhs
1.70 +40 -21 fptools/ghc/compiler/hsSyn/HsExpr.lhs
1.37 +21 -7 fptools/ghc/compiler/hsSyn/HsSyn.lhs
1.161 +1 -1 fptools/ghc/compiler/main/MkIface.lhs
1.86 +3 -0 fptools/ghc/compiler/parser/Lex.lhs
1.61 +10 -5 fptools/ghc/compiler/parser/ParseUtil.lhs
1.105 +4 -1 fptools/ghc/compiler/parser/Parser.y
1.84 +1 -1 fptools/ghc/compiler/prelude/PrelInfo.lhs
1.62 +11 -1 fptools/ghc/compiler/prelude/PrelNames.lhs
1.80 +123 -146 fptools/ghc/compiler/rename/RnBinds.lhs
1.154 +15 -11 fptools/ghc/compiler/rename/RnEnv.lhs
1.99 +283 -401 fptools/ghc/compiler/rename/RnExpr.lhs
1.134 +0 -1 fptools/ghc/compiler/rename/RnNames.lhs
1.9 +5 -2 fptools/ghc/compiler/rename/RnSource.hi-boot-5
1.3 +4 -1 fptools/ghc/compiler/rename/RnSource.hi-boot-6
1.150 +23 -17 fptools/ghc/compiler/rename/RnSource.lhs
1.10 +285 -10 fptools/ghc/compiler/rename/RnTypes.lhs
1.120 +1 -1 fptools/ghc/compiler/typecheck/TcClassDcl.lhs
1.87 +1 -1 fptools/ghc/compiler/typecheck/TcGenDeriv.lhs
1.80 +12 -2 fptools/ghc/compiler/typecheck/TcHsSyn.lhs
1.40 +2 -7 fptools/ghc/compiler/typecheck/TcMType.lhs
1.67 +42 -23 fptools/ghc/compiler/typecheck/TcMatches.lhs
1.4 +14 -15 fptools/ghc/compiler/typecheck/TcRnDriver.lhs
1.42 +3 -4 fptools/ghc/compiler/typecheck/TcRules.lhs
1.94 +2 -3 fptools/ghc/compiler/typecheck/TcTyClsDecls.lhs
1.17 +1 -1 fptools/ghc/compiler/utils/Digraph.lhs
1.54 +1 -1 fptools/ghc/compiler/utils/Outputable.lhs
|
Try Searching:
servers, voip, java, networking, microsoft ...
|
|
|
|