Normalise the type of an inferred let-binding
authorSimon Peyton Jones <simonpj@microsoft.com>
Wed, 29 Oct 2014 17:21:05 +0000 (17:21 +0000)
committerSimon Peyton Jones <simonpj@microsoft.com>
Tue, 4 Nov 2014 10:37:59 +0000 (10:37 +0000)
commita6e7654b495f68adcdcf3ffe920d5aa1b5a9b7dc
treea9d1c70678d2a0f4bdc9913ffed21266ec7ac111
parente11e1b80324cd165f5439132384b56dd72355718
Normalise the type of an inferred let-binding

With the new constraint solver, we don't guarantee to fully-normalise
all constraints (if doing so is not necessary to solve them). So we
may end up with an inferred type like
      f :: [F Int] -> Bool
which could be simplifed to
      f :: [Char] -> Bool
if there is a suitable family instance declaration.  This patch
does this normalisation, in TcBinds.mkExport
compiler/typecheck/TcBinds.lhs
compiler/typecheck/TcRnDriver.lhs