[seed varName table with quantified names when converting data constructor types
John Meacham <john@repetae.net>**20060407100021] hunk ./DataConstructors.hs 57
-tipe t = runVarName (tipe' t) where
-    tipe' (TAp t1 t2) = liftM2 eAp (tipe' t1) (tipe' t2)
-    tipe' (TArrow t1 t2) =  do
-        t1' <- tipe' t1
-        t2' <- tipe' t2
-        return $ EPi (tVr 0 (t1')) t2'
-    tipe' (TCon (Tycon n k)) | n == tc_World__ = return $ ELit (LitCons rt_Worldzh [] eHash)
-    tipe' (TCon (Tycon n k)) =  return $ ELit (LitCons n [] (kind k))
-    tipe' (TVar tv@Tyvar { tyvarKind = k}) = do
-        v <- lookupName tv
-        return $ EVar $ tVr v (kind k)
-    tipe' (TForAll [] (_ :=> t)) = tipe' t
-    tipe' (TExists [] (_ :=> t)) = tipe' t
-    tipe' (TForAll xs (_ :=> t)) = do
-        xs' <- flip mapM xs $ \tv -> do
-            v <- newName [70,72..] () tv
-            return $ tVr v (kind $ tyvarKind tv)
-        t' <- tipe' t
-        return $ foldr EPi t' xs' -- [ tVr n (kind k) | n <- [2,4..] | k <- xs ]
-    tipe' (TExists xs (_ :=> t)) = do
-        xs' <- flip mapM xs $ \tv -> do
-            --v <- newName [70,72..] () tv
-            --return $ tVr v (kind $ tyvarKind tv)
-            return $ (kind $ tyvarKind tv)
-        t' <- tipe' t
-        return $ ELit (LitCons (unboxedNameTuple TypeConstructor (length xs' + 1)) (t':xs') eHash)
+tipe t = runVarName (tipe' t)
+tipe' (TAp t1 t2) = liftM2 eAp (tipe' t1) (tipe' t2)
+tipe' (TArrow t1 t2) =  do
+    t1' <- tipe' t1
+    t2' <- tipe' t2
+    return $ EPi (tVr 0 (t1')) t2'
+tipe' (TCon (Tycon n k)) | n == tc_World__ = return $ ELit (LitCons rt_Worldzh [] eHash)
+tipe' (TCon (Tycon n k)) =  return $ ELit (LitCons n [] (kind k))
+tipe' (TVar tv@Tyvar { tyvarKind = k}) = do
+    v <- lookupName tv
+    return $ EVar $ tVr v (kind k)
+tipe' (TForAll [] (_ :=> t)) = tipe' t
+tipe' (TExists [] (_ :=> t)) = tipe' t
+tipe' (TForAll xs (_ :=> t)) = do
+    xs' <- flip mapM xs $ \tv -> do
+        v <- newName [70,72..] () tv
+        return $ tVr v (kind $ tyvarKind tv)
+    t' <- tipe' t
+    return $ foldr EPi t' xs' -- [ tVr n (kind k) | n <- [2,4..] | k <- xs ]
+tipe' (TExists xs (_ :=> t)) = do
+    xs' <- flip mapM xs $ \tv -> do
+        --v <- newName [70,72..] () tv
+        --return $ tVr v (kind $ tyvarKind tv)
+        return $ (kind $ tyvarKind tv)
+    t' <- tipe' t
+    return $ ELit (LitCons (unboxedNameTuple TypeConstructor (length xs' + 1)) (t':xs') eHash)
hunk ./DataConstructors.hs 386
-            (ELit (LitCons _ xs _) ,ts') = fromPi $ tipe ty
+            (ELit (LitCons _ xs _) ,ts') = fromPi $ runVarName $ do
+                flip mapM_ vs $ \tv -> do
+                    newName [2,4..] () tv
+                tipe' ty
hunk ./DataConstructors.hs 393
-            Just (TForAll _ (_ :=> ty)) =  Map.lookup dataConsName cm
+            (vs,ty) = case Map.lookup dataConsName cm of
+                Just (TForAll vs (_ :=> ty)) -> (vs,ty)
+                Just ty -> ([],ty)
+            -- =  Map.lookup dataConsName cm