[project @ 2001-05-21 09:19:14 by simonpj]
-------------------------------
Improve pattern type-signatures
-------------------------------
The main effect of this commit is to implement the idea (originally
Marcin's suggestion) that type variables in pattern type signatures
are simply names for types; they don't have to name a type that is
itself a type variable.
For example
f :: Int -> Int
f (x::a) = let y::a
y = x
in x+y
is fine. Here 'a' is a name for the type 'Int', and does not have
to be universally quantified.
I also took the opportunity to modularise the implementation of
pattern type-checking, mainly in TcMatches. As a result pattern type
signatures should work in do-notation (which they didn't before).
ToDo: update documentation