src/Tools/code/code_haskell.ML
changeset 31376 4356b52b03f7
parent 31156 90fed3d4430f
child 31665 a1f4d3b3f6c8
equal deleted inserted replaced
31375:815426e7dd3b 31376:4356b52b03f7
   104             fun pr ((pat, ty), t) vars =
   104             fun pr ((pat, ty), t) vars =
   105               vars
   105               vars
   106               |> pr_bind tyvars thm BR ((NONE, SOME pat), ty)
   106               |> pr_bind tyvars thm BR ((NONE, SOME pat), ty)
   107               |>> (fn p => semicolon [p, str "=", pr_term tyvars thm vars NOBR t])
   107               |>> (fn p => semicolon [p, str "=", pr_term tyvars thm vars NOBR t])
   108             val (ps, vars') = fold_map pr binds vars;
   108             val (ps, vars') = fold_map pr binds vars;
   109           in
   109           in 
   110             Pretty.block_enclose (
   110             Pretty.block_enclose (
   111               str "let {",
   111               str "(let {",
   112               concat [str "}", str "in", pr_term tyvars thm vars' NOBR body]
   112               concat [str "}", str "in", pr_term tyvars thm vars' NOBR body, str ")"]
   113             ) ps
   113             ) ps
   114           end
   114           end
   115       | pr_case tyvars thm vars fxy (((t, ty), clauses as _ :: _), _) =
   115       | pr_case tyvars thm vars fxy (((t, ty), clauses as _ :: _), _) =
   116           let
   116           let
   117             fun pr (pat, body) =
   117             fun pr (pat, body) =
   122             Pretty.block_enclose (
   122             Pretty.block_enclose (
   123               concat [str "(case", pr_term tyvars thm vars NOBR t, str "of", str "{"],
   123               concat [str "(case", pr_term tyvars thm vars NOBR t, str "of", str "{"],
   124               str "})"
   124               str "})"
   125             ) (map pr clauses)
   125             ) (map pr clauses)
   126           end
   126           end
   127       | pr_case tyvars thm vars fxy ((_, []), _) = str "error \"empty case\"";
   127       | pr_case tyvars thm vars fxy ((_, []), _) =
       
   128           (brackify fxy o Pretty.breaks o map str) ["error", "\"empty case\""];
   128     fun pr_stmt (name, Code_Thingol.Fun (_, ((vs, ty), []))) =
   129     fun pr_stmt (name, Code_Thingol.Fun (_, ((vs, ty), []))) =
   129           let
   130           let
   130             val tyvars = Code_Printer.intro_vars (map fst vs) init_syms;
   131             val tyvars = Code_Printer.intro_vars (map fst vs) init_syms;
   131             val n = (length o fst o Code_Thingol.unfold_fun) ty;
   132             val n = (length o fst o Code_Thingol.unfold_fun) ty;
   132           in
   133           in