- | _, pars, uri, u, None ->
- let f u = f (uri, B.Abst, u) 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 (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
- 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