let fold_right l ~f ~init =
    fold ~f:(fun a b -> f b a) ~init (List.rev l)