[switch to new hstype -> internal type conversion method
John Meacham <john@repetae.net>**20060214061122] hunk ./FrontEnd/KindInfer.hs 41
-import Type(quantify,tv,tTTuple,schemeToType)
+import Type(quantify,tv,tTTuple,schemeToType,typeToScheme)
hunk ./FrontEnd/KindInfer.hs 540
--- this version quantifies all the type variables
--- perhaps there should be a version that is
--- parameterised with which variables to quantify
-
--- TODO take vs in forall type into account
--- hopefully everything has been renamed to something unique
-
-aHsQualTypeToScheme :: KindEnv -> HsQualType -> Scheme
-aHsQualTypeToScheme kt HsQualType { hsQualTypeContext = cntxt, hsQualTypeType = qt  } | HsTyForall vs qt' <- forallHoist qt = aHsQualTypeToScheme kt HsQualType { hsQualTypeContext = cntxt ++ hsQualTypeHsContext qt', hsQualTypeType = hsQualTypeType qt' }
-aHsQualTypeToScheme kt HsUnQualType { hsQualTypeType = t } = aHsQualTypeToScheme kt HsQualType { hsQualTypeContext = [], hsQualTypeType = t }
-aHsQualTypeToScheme kt qualType = quantify vars qt where
-   qt = aHsQualTypeToQualType kt qualType
-   vars = tv qt
-
-
-forallHoist :: HsType -> HsType
-forallHoist (HsTyForall vs qt) | HsTyForall vs' qt' <- hsQualTypeType qt  = forallHoist (HsTyForall (vs ++ vs') HsQualType { hsQualTypeType = hsQualTypeType qt', hsQualTypeContext = hsQualTypeHsContext qt ++ hsQualTypeHsContext qt' })
-forallHoist (HsTyFun a b) = case forallHoist b of
-    HsTyForall as qt -> HsTyForall as HsQualType { hsQualTypeContext = hsQualTypeHsContext qt, hsQualTypeType = HsTyFun a (hsQualTypeType qt) }
-    b' -> HsTyFun (forallHoist a) b'
-forallHoist (HsTyTuple ts) = HsTyTuple (map forallHoist ts)
-forallHoist (HsTyApp a b) = HsTyApp (forallHoist a) (forallHoist b)
-forallHoist t = t
hunk ./FrontEnd/KindInfer.hs 548
-hsQualTypeToScheme kt qualType =  return $ aHsQualTypeToScheme newEnv qualType where
-   newEnv = kiHsQualType kt qualType
+hsQualTypeToScheme kt qualType = liftM typeToScheme $ hsQualTypeToSigma kt qualType
+
hunk ./FrontEnd/KindInfer.hs 551
-hsQualTypeToSigma :: Monad m => KindEnv -> HsQualType -> m Sigma
-hsQualTypeToSigma kt qualType =  return $ schemeToType $ aHsQualTypeToScheme newEnv qualType where
-   newEnv = kiHsQualType kt qualType
+hsQualTypeToSigma kt qualType = hsQualTypeToType kt (Just []) qualType
hunk ./FrontEnd/Rename.hs 1363
+getHsNamesFromHsType (HsTyExists _bs t) = getHsNamesFromHsQualType t -- TODO, scoping?
hunk ./FrontEnd/TypeSyns.hs 708
+getHsNamesFromHsType (HsTyExists vs qt) = getHsNamesFromHsQualType qt List.\\ map hsTyVarBindName vs