equal
deleted
inserted
replaced
34 val binder_Ts = binder_types (fastype_of ctr) |
34 val binder_Ts = binder_types (fastype_of ctr) |
35 in |
35 in |
36 mk_selectors T binder_Ts sels #>> pair ctr |
36 mk_selectors T binder_Ts sels #>> pair ctr |
37 end |
37 end |
38 |
38 |
39 val selss = if has_duplicates (op aconv) (flat selss0) then [] else selss0 |
39 val selss = |
|
40 if has_duplicates (op aconv) (flat selss0) orelse |
|
41 exists (exists (can (dest_funT o range_type o fastype_of))) selss0 then |
|
42 [] |
|
43 else |
|
44 selss0 |
40 in |
45 in |
41 @{fold_map 2} mk_constr ctrs0 (Ctr_Sugar_Util.pad_list [] (length ctrs0) selss) ctxt |
46 @{fold_map 2} mk_constr ctrs0 (Ctr_Sugar_Util.pad_list [] (length ctrs0) selss) ctxt |
42 |>> (pair T #> single) |
47 |>> (pair T #> single) |
43 end |
48 end |
44 |
49 |