- | _, pars, uri, u, None ->
- let f u = f ((B.Abst, u), uri) in
- let f pars = map_fold_left f xlate_term map_pars u pars in
- Cps.list_rev_map f xlate_pars pars
- | _, pars, uri, u, Some (_, t) ->
- let f u t = f ((B.Abbr, (B.Cast (u, t))), uri) 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
- Cps.list_rev_map f xlate_pars pars
+ | e, pars, uri, u, None ->
+ let f u = f (e, uri, B.Abst u) in
+ let f c = unwind_to_xlate_term f c u in
+ xlate_pars f pars
+ | e, pars, uri, u, Some (_, t) ->
+ let f u t = f (e, uri, B.Abbr (B.Cast ([], u, t))) in
+ let f c u = unwind_to_xlate_term (f u) c t in
+ let f c = unwind_to_xlate_term (f c) c u in
+ xlate_pars f pars