Beautiful new approach to the skolem-escape check and untouchable
authorsimonpj@microsoft.com <unknown>
Fri, 8 Oct 2010 13:37:51 +0000 (13:37 +0000)
committersimonpj@microsoft.com <unknown>
Fri, 8 Oct 2010 13:37:51 +0000 (13:37 +0000)
commitdebb7b80e707c343a3a7d8993ffab19b83e5c52b
tree77a59444eaf39fa2bd3220fe12074a6ee737ee80
parentcd2f5397bc1345fc37706168c268a8bd37af7f2f
Beautiful new approach to the skolem-escape check and untouchable

Instead of keeping a *set* of untouchable variables in each
implication contraints, we keep a *range* of uniques for the
*touchable* variables of an implication.  This are precisely
the ones we would call the "existentials" if we were French.

It turns out that the code is more efficient, and vastly easier
to get right, than the set-based approach.

Fixes Trac #4355 among others
12 files changed:
compiler/ghci/RtClosureInspect.hs
compiler/typecheck/TcBinds.lhs
compiler/typecheck/TcMType.lhs
compiler/typecheck/TcPat.lhs
compiler/typecheck/TcRnDriver.lhs
compiler/typecheck/TcRnMonad.lhs
compiler/typecheck/TcRnTypes.lhs
compiler/typecheck/TcRules.lhs
compiler/typecheck/TcSMonad.lhs
compiler/typecheck/TcSimplify.lhs
compiler/typecheck/TcSplice.lhs
compiler/typecheck/TcUnify.lhs