src/Tools/Code/code_printer.ML
changeset 31874 f172346ba805
parent 31775 2b04504fcb69
child 31889 fb2c8a687529
equal deleted inserted replaced
31873:00878e406bf5 31874:f172346ba805
    66     -> proto_const_syntax -> Code_Thingol.naming -> const_syntax * Code_Thingol.naming
    66     -> proto_const_syntax -> Code_Thingol.naming -> const_syntax * Code_Thingol.naming
    67   val gen_pr_app: (thm -> var_ctxt -> const * iterm list -> Pretty.T list)
    67   val gen_pr_app: (thm -> var_ctxt -> const * iterm list -> Pretty.T list)
    68     -> (thm -> var_ctxt -> fixity -> iterm -> Pretty.T)
    68     -> (thm -> var_ctxt -> fixity -> iterm -> Pretty.T)
    69     -> (string -> const_syntax option)
    69     -> (string -> const_syntax option)
    70     -> thm -> var_ctxt -> fixity -> const * iterm list -> Pretty.T
    70     -> thm -> var_ctxt -> fixity -> const * iterm list -> Pretty.T
    71   val gen_pr_bind: ((string option * Pretty.T option) * itype -> Pretty.T)
    71   val gen_pr_bind: (Pretty.T option * itype -> Pretty.T)
    72     -> (thm -> var_ctxt -> fixity -> iterm -> Pretty.T)
    72     -> (thm -> var_ctxt -> fixity -> iterm -> Pretty.T)
    73     -> thm -> fixity
    73     -> thm -> fixity
    74     -> (string option * iterm option) * itype -> var_ctxt -> Pretty.T * var_ctxt
    74     -> iterm option * itype -> var_ctxt -> Pretty.T * var_ctxt
    75 
    75 
    76   val mk_name_module: Name.context -> string option -> (string -> string option)
    76   val mk_name_module: Name.context -> string option -> (string -> string option)
    77     -> 'a Graph.T -> string -> string
    77     -> 'a Graph.T -> string -> string
    78   val dest_name: string -> string * string
    78   val dest_name: string -> string * string
    79 end;
    79 end;
   214           then case chop k ts of (ts1, ts2) =>
   214           then case chop k ts of (ts1, ts2) =>
   215             brackify fxy (pr' APP ts1 :: map (pr_term thm vars BR) ts2)
   215             brackify fxy (pr' APP ts1 :: map (pr_term thm vars BR) ts2)
   216           else pr_term thm vars fxy (Code_Thingol.eta_expand k app)
   216           else pr_term thm vars fxy (Code_Thingol.eta_expand k app)
   217         end;
   217         end;
   218 
   218 
   219 fun gen_pr_bind pr_bind pr_term thm (fxy : fixity) ((v, pat), ty : itype) vars =
   219 fun gen_pr_bind pr_bind pr_term thm (fxy : fixity) (some_pat, ty : itype) vars =
   220   let
   220   let
   221     val vs = case pat
   221     val vs = case some_pat
   222      of SOME pat => Code_Thingol.fold_varnames (insert (op =)) pat []
   222      of SOME pat => Code_Thingol.fold_varnames (insert (op =)) pat []
   223       | NONE => [];
   223       | NONE => [];
   224     val vars' = intro_vars (the_list v) vars;
   224     val vars' = intro_vars vs vars;
   225     val vars'' = intro_vars vs vars';
   225     val some_pat' = Option.map (pr_term thm vars' fxy) some_pat;
   226     val v' = Option.map (lookup_var vars') v;
   226   in (pr_bind (some_pat', ty), vars') end;
   227     val pat' = Option.map (pr_term thm vars'' fxy) pat;
       
   228   in (pr_bind ((v', pat'), ty), vars'') end;
       
   229 
   227 
   230 
   228 
   231 (* mixfix syntax *)
   229 (* mixfix syntax *)
   232 
   230 
   233 datatype 'a mixfix =
   231 datatype 'a mixfix =