diff options
author | simonpj <unknown> | 2004-12-21 12:23:03 +0000 |
---|---|---|
committer | simonpj <unknown> | 2004-12-21 12:23:03 +0000 |
commit | 79a8b87c0bd61d56b4cf45bd584c9174aab48e61 (patch) | |
tree | ba9661597d6e6ab2f9d939459fd11d279c26813a /docs | |
parent | d673a348ba1a8c41e9eaeb255e0c43156d883526 (diff) | |
download | haskell-79a8b87c0bd61d56b4cf45bd584c9174aab48e61.tar.gz |
[project @ 2004-12-21 12:22:22 by simonpj]
---------------------------------
Improve handling of lexically scoped type variables
---------------------------------
If we have
f :: T a -> a
f (x :: T b) = ...
then the lexically scoped variable 'b' should refer to the rigid
type variable 'a', without any intervening wobbliness. Previously
the in-scope type variables were always mutable TyVars, which were
instantatiated to point to the type they were bound to; but since
the advent of GADTs the intervening mutable type variable is a bad
thing.
Hence
* In the type environment, ATyVar now carries a type
* The call to refineTyVars in tc_pat on SigPatIn
finds the types by matching
* Then tcExtendTyVarEnv3 extends the type envt appropriately
Rater a lot of huff and puff, but it's quite natural for ATyVar
to contain a type.
Various other small nomenclature changes along the way.
Diffstat (limited to 'docs')
0 files changed, 0 insertions, 0 deletions