-
John van Groningen authored
feature, in types of local functions with free variables that are added as function arguments by lifting add specifying type and attribute variables that occur in the types of these free variables/lifted arguments so that the (partial) type of functions that use these variables and attributes can be specified with syntax: function_name :: E.^ type_and_attribute_variables : function_type type_and_attributes_variables is a list of at least one of: type_var *type_var .type_var (attribute_var:type_var) (attribute_var:) these type and attribute variables are still polymorphic, but for recursive calls no new variables are created, so polymorpic recursion is not supported for these variables a local function type can still not be specified if: an attribute inequality contains one attribute variable that occurs only in types of free variables/lifted arguments (and the other attribute variable occurs only in the rest of the function type) or a class constraint that contains both a type variable that occurs only in types of free variables/lifted arguments and a type variable that occurs in the rest of the function type
0c72cfd0