equal
deleted
inserted
replaced
38 datatype ml_stmt = |
38 datatype ml_stmt = |
39 ML_Exc of string * (typscheme * int) |
39 ML_Exc of string * (typscheme * int) |
40 | ML_Val of ml_binding |
40 | ML_Val of ml_binding |
41 | ML_Funs of ml_binding list * string list |
41 | ML_Funs of ml_binding list * string list |
42 | ML_Datas of (string * ((vname * sort) list * (string * itype list) list)) list |
42 | ML_Datas of (string * ((vname * sort) list * (string * itype list) list)) list |
43 | ML_Class of string * (vname * ((class * string) list * (string * itype) list)); |
43 | ML_Class of string * (vname * (((class * string) list * (class * string) list) * (string * itype) list)); |
44 |
44 |
45 fun stmt_name_of_binding (ML_Function (name, _)) = name |
45 fun stmt_name_of_binding (ML_Function (name, _)) = name |
46 | stmt_name_of_binding (ML_Instance (name, _)) = name; |
46 | stmt_name_of_binding (ML_Instance (name, _)) = name; |
47 |
47 |
48 fun stmt_names_of (ML_Exc (name, _)) = [name] |
48 fun stmt_names_of (ML_Exc (name, _)) = [name] |
299 val (ps, p) = split_last sig_ps; |
299 val (ps, p) = split_last sig_ps; |
300 in pair |
300 in pair |
301 sig_ps |
301 sig_ps |
302 (Pretty.chunks (ps @| semicolon [p])) |
302 (Pretty.chunks (ps @| semicolon [p])) |
303 end |
303 end |
304 | print_stmt (ML_Class (class, (v, (super_classes, classparams)))) = |
304 | print_stmt (ML_Class (class, (v, ((super_classes, _), classparams)))) = |
305 let |
305 let |
306 fun print_field s p = concat [str s, str ":", p]; |
306 fun print_field s p = concat [str s, str ":", p]; |
307 fun print_proj s p = semicolon |
307 fun print_proj s p = semicolon |
308 (map str ["val", s, "=", "#" ^ s, ":"] @| p); |
308 (map str ["val", s, "=", "#" ^ s, ":"] @| p); |
309 fun print_super_class_decl (super_class, classrel) = |
309 fun print_super_class_decl (super_class, classrel) = |
633 val (ps, p) = split_last sig_ps; |
633 val (ps, p) = split_last sig_ps; |
634 in pair |
634 in pair |
635 sig_ps |
635 sig_ps |
636 (Pretty.chunks (ps @| doublesemicolon [p])) |
636 (Pretty.chunks (ps @| doublesemicolon [p])) |
637 end |
637 end |
638 | print_stmt (ML_Class (class, (v, (super_classes, classparams)))) = |
638 | print_stmt (ML_Class (class, (v, ((super_classes, _), classparams)))) = |
639 let |
639 let |
640 fun print_field s p = concat [str s, str ":", p]; |
640 fun print_field s p = concat [str s, str ":", p]; |
641 fun print_super_class_field (super_class, classrel) = |
641 fun print_super_class_field (super_class, classrel) = |
642 print_field (deresolve classrel) (print_dicttyp (super_class, ITyVar v)); |
642 print_field (deresolve classrel) (print_dicttyp (super_class, ITyVar v)); |
643 fun print_classparam_decl (classparam, ty) = |
643 fun print_classparam_decl (classparam, ty) = |