Lines Matching defs:tp
73 List.map (fn (tp, s) => (tp, S.listItems s)) (M.listItems (!ClosFunc)));
81 let val tp = type_of fname
83 case M.peek(!ClosFunc, tp) of
86 ClosFunc := M.insert(!ClosFunc, tp, S.add(S.empty tvarOrder, fname))
88 ClosFunc := M.insert(!ClosFunc, tp, S.add(s, fname))
163 fun build_type tp funcs = (* build a new datatype for a type *)
189 val _ = ClosName := M.insert(!ClosName, tp, x)
213 val _ = ClosInfo := M.insert(!ClosInfo, tp, #1 (hd (#2 new_clos_type)))
224 List.map (fn (tp, fs) => build_type tp fs) (M.listItems (!ClosFunc))
231 fun type2closure tp = (* from an original type to its closure type *)
232 TypeBasePure.ty_of(M.find(!ClosInfo, tp))
233 handle _ => tp
236 let val (name, tp) = dest_var t
237 in mk_var(name, type2closure tp)
241 fun type2dispatch tp = (* from an original type to its dispatch function *)
242 let val tinfo = M.find(!ClosInfo, tp)
245 val (arg_type, return_type) = dom_rng tp
259 fun mk_dispatch tp =
261 val tinfo = M.find(!ClosInfo, tp)
267 val funL = S.listItems (M.find(!ClosFunc, tp))
268 val (arg_type, return_type) = dom_rng tp
317 List.map (fn tp => Dispatched := M.insert(!Dispatched, tp, mk_dispatch tp))
374 val tp = type_of M
377 type2closure tp)
380 mk_comb (type2dispatch(tp), closure)
433 fun process_type tp =
434 let val fs = S.listItems(M.find (!ClosFunc, tp))
441 val spec = list_mk_conj (strip_conj (M.find(!Dispatched, tp)) @ fs')
497 let val (v, tp) = dest_var t
498 in mk_const(v, tp)