-let xlate_entry f = function
- | e, pars, uri, u, None ->
- let f u = f (e, uri, B.Abst u) in
- let f pars = map_fold_left f xlate_term map_pars u pars in
- C.list_map f xlate_pars pars
- | e, pars, uri, u, Some (_, t) ->
- let f u t = f (e, uri, B.Abbr (B.Cast (u, t))) in
- let f pars u = map_fold_left (f u) xlate_term map_pars t pars in
- let f pars = map_fold_left (f pars) xlate_term map_pars u pars in
- C.list_map f xlate_pars pars
+let unwind_to_xlate_term f c t =
+ let map t a b = B.bind a b t in
+ let f t = f (B.fold_left map t c) in
+ xlate_term c f t