[project @ 2002-10-23 14:30:00 by simonpj]
authorsimonpj <unknown>
Wed, 23 Oct 2002 14:30:03 +0000 (14:30 +0000)
committersimonpj <unknown>
Wed, 23 Oct 2002 14:30:03 +0000 (14:30 +0000)
commit203a687fbdb9bf54592f907302d8e47e174bb549
tree4f5db95ffcb768786c5961f427e6471712ee30d5
parent9704f5440c245c491e3db19f80a0b116111ae088
[project @ 2002-10-23 14:30:00 by simonpj]
------------------------------------------------
Allow implicit-parameter bindings anywhere that
a normal binding group is allowed.
------------------------------------------------

That is, you can have implicit parameters

* in a let binding
* in a where clause (but then you can't have non-implicit
  ones as well)
* in a let group in a list comprehension or monad do-notation

The implementation is simple: just add IPBinds to the allowable forms of HsBinds,
and remove the HsWith expression form altogether.   (It now comes in via the
HsLet form.)

It'a a nice generalisation really.  Needs a bit of documentation, which I'll do next.
13 files changed:
ghc/compiler/deSugar/DsExpr.lhs
ghc/compiler/deSugar/DsMeta.hs
ghc/compiler/hsSyn/HsBinds.lhs
ghc/compiler/hsSyn/HsExpr.lhs
ghc/compiler/hsSyn/HsSyn.lhs
ghc/compiler/parser/Parser.y
ghc/compiler/rename/RnExpr.lhs
ghc/compiler/rename/RnSource.lhs
ghc/compiler/typecheck/TcBinds.lhs
ghc/compiler/typecheck/TcExpr.lhs
ghc/compiler/typecheck/TcGenDeriv.lhs
ghc/compiler/typecheck/TcHsSyn.lhs
ghc/compiler/typecheck/TcMatches.lhs