typeName (TyObject i _) = i.gtd_name
typeName (TyRecord i _) = i.grd_name
+typeGenType :: Type -> GenType
+typeGenType (TyBasic a) = GenTypeCons $ toString a
+typeGenType (TyRef a) = GenTypeCons $ toString a
+typeGenType (TyArrow l r) = GenTypeArrow (typeGenType l) (typeGenType r)
+typeGenType (TyArray s a) = GenTypeApp (GenTypeCons (toString s)) (typeGenType a)
+typeGenType (TyUList s a) = GenTypeApp (GenTypeCons (toString s)) (typeGenType a)
+typeGenType (TyUMaybe a) = GenTypeApp (GenTypeCons "_#Maybe") (typeGenType a)
+typeGenType (TyNewType _ _ a) = abort "typeGenType for newtypes not yet implemented\n"
+typeGenType (TyObject i _) = gent i.gtd_arity (GenTypeCons i.gtd_name)
+where
+ gent 0 t = t
+ gent n t = gent (dec n) (GenTypeApp t (GenTypeVar n))
+
+typeGenType (TyRecord i _) = i.grd_type
+
instance isBuiltin String
where
isBuiltin s = [()\\(l, r)<-predef | l == s || r == s] =: [_:_]