Skip to content
  • John van Groningen's avatar
    feature, in types of local functions with free variables that are added as... · 0c72cfd0
    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