src/Pure/type_infer.ML
changeset 32002 1a35de4112bb
parent 31977 e03059ae2d82
child 32033 f92df23c3305
equal deleted inserted replaced
32001:fafefd0b341c 32002:1a35de4112bb
    37 (* user parameters *)
    37 (* user parameters *)
    38 
    38 
    39 fun is_param (x, _: int) = String.isPrefix "?" x;
    39 fun is_param (x, _: int) = String.isPrefix "?" x;
    40 fun param i (x, S) = TVar (("?" ^ x, i), S);
    40 fun param i (x, S) = TVar (("?" ^ x, i), S);
    41 
    41 
    42 val paramify_vars = Term.map_atyps (fn TVar ((x, i), S) => param i (x, S) | T => T);
    42 val paramify_vars =
       
    43   perhaps (Term_Subst.map_atypsT_option (fn TVar ((x, i), S) => SOME (param i (x, S)) | _ => NONE));
    43 
    44 
    44 val paramify_dummies =
    45 val paramify_dummies =
    45   let
    46   let
    46     fun dummy S maxidx = (param (maxidx + 1) ("'dummy", S), maxidx + 1);
    47     fun dummy S maxidx = (param (maxidx + 1) ("'dummy", S), maxidx + 1);
    47 
    48