-
Simon Peyton Jones authored
------------------------------- 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
c7e7bc25