src/Tools/Code/code_ml.ML
changeset 37446 fc55011cfdfd
parent 37445 e372fa3c7239
child 37447 ad3e04f289b6
equal deleted inserted replaced
37445:e372fa3c7239 37446:fc55011cfdfd
    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) =