equal
deleted
inserted
replaced
440 [] => fresh_tyargs () |
440 [] => fresh_tyargs () |
441 | gen_tyargs :: gen_tyargss_tl => |
441 | gen_tyargs :: gen_tyargss_tl => |
442 let |
442 let |
443 val unify_pairs = split_list (maps (curry (op ~~) gen_tyargs) gen_tyargss_tl); |
443 val unify_pairs = split_list (maps (curry (op ~~) gen_tyargs) gen_tyargss_tl); |
444 val mgu = Type.raw_unifys unify_pairs Vartab.empty; |
444 val mgu = Type.raw_unifys unify_pairs Vartab.empty; |
445 val gen_tyargs' = map (Envir.subst_type mgu) gen_tyargs; |
445 val gen_tyargs' = map (Envir.norm_type mgu) gen_tyargs; |
446 val gen_seen' = map (Envir.subst_type mgu) gen_seen; |
446 val gen_seen' = map (Envir.norm_type mgu) gen_seen; |
447 in |
447 in |
448 (rho, gen_tyargs', gen_seen', lthy) |
448 (rho, gen_tyargs', gen_seen', lthy) |
449 end) |
449 end) |
450 else |
450 else |
451 fresh_tyargs (); |
451 fresh_tyargs (); |