equal
deleted
inserted
replaced
219 val constrs = Variable.polymorphic ctxt raw_constrs; |
219 val constrs = Variable.polymorphic ctxt raw_constrs; |
220 val case_key = case_comb |> dest_Const |> fst; |
220 val case_key = case_comb |> dest_Const |> fst; |
221 val constr_keys = map (fst o dest_Const) constrs; |
221 val constr_keys = map (fst o dest_Const) constrs; |
222 val data = (case_comb, constrs); |
222 val data = (case_comb, constrs); |
223 val Tname = Tname_of_data data; |
223 val Tname = Tname_of_data data; |
224 val update_constrs = |
224 val update_constrs = fold (fn key => Symtab.cons_list (key, (Tname, data))) constr_keys; |
225 fold (fn key => Symtab.insert_list (eq_fst (op =)) (key, (Tname, data))) constr_keys; |
225 val update_cases = Symtab.update (case_key, data); |
226 val update_cases = Symtab.default (case_key, data); |
|
227 in |
226 in |
228 context |
227 context |
229 |> map_constrs update_constrs |
228 |> map_constrs update_constrs |
230 |> map_cases update_cases |
229 |> map_cases update_cases |
231 end; |
230 end; |