[add fromTArrow and fromType utility routines
John Meacham <john@repetae.net>**20060303042417] hunk ./FrontEnd/Tc/Monad.hs 317
---skolomize :: Sigma' -> Tc ([SkolemTV],Preds,Rho')
---skolomize (TForAll vs (ps :=> rho)) = return (vs,ps,rho)
---freshSigma s >>= \x -> case x of
---    TForAll as (_ :=> r) -> return (as,r)
---    r -> return ([],r)
---skolomize s = return ([],[],s)
-skolomize s = freshSigma s >>= \x -> case x of
---skolomize s = return s >>= \x -> case x of
-    TForAll as (ps :=> r) -> return (as,ps,r)
-    r -> return ([],[],r)
+skolomize :: Sigma -> Tc ([Tyvar],[Pred],Type)
+skolomize s = freshSigma s >>= return . fromType
hunk ./FrontEnd/Tc/Type.hs 54
+fromType :: Sigma -> ([Tyvar],[Pred],Type)
+fromType s = case s of
+    TForAll as (ps :=> r) -> (as,ps,r)
+    r -> ([],[],r)
hunk ./FrontEnd/Tc/Type.hs 95
+fromTArrow t = f t [] where
+    f (TArrow a b) rs = f b (a:rs)
+    f t rs = (reverse rs,t)