equal
deleted
inserted
replaced
201 |
201 |
202 (* find datatypes which contain all datatypes in tnames' *) |
202 (* find datatypes which contain all datatypes in tnames' *) |
203 |
203 |
204 fun find_dts (dt_info : datatype_info Symtab.table) _ [] = [] |
204 fun find_dts (dt_info : datatype_info Symtab.table) _ [] = [] |
205 | find_dts dt_info tnames' (tname::tnames) = |
205 | find_dts dt_info tnames' (tname::tnames) = |
206 (case Symtab.curried_lookup dt_info tname of |
206 (case Symtab.lookup dt_info tname of |
207 NONE => primrec_err (quote tname ^ " is not a datatype") |
207 NONE => primrec_err (quote tname ^ " is not a datatype") |
208 | SOME dt => |
208 | SOME dt => |
209 if tnames' subset (map (#1 o snd) (#descr dt)) then |
209 if tnames' subset (map (#1 o snd) (#descr dt)) then |
210 (tname, dt)::(find_dts dt_info tnames' tnames) |
210 (tname, dt)::(find_dts dt_info tnames' tnames) |
211 else find_dts dt_info tnames' tnames); |
211 else find_dts dt_info tnames' tnames); |