/**
* Gives the genType for a type
*/
-typeGenType :: Type -> GenType
+typeGenType :: Type -> [GenType]
+
+/**
+ * Return the kind of the type
+ */
+:: Kind = KStar | KArrow Kind Kind
+genTypeKind :: Type -> Kind
/**
* Predicate whether the outer type is a builtin type