let export file preludes pp =
  let cout = open_out file in
  try
    cat preludes cout ;
    flush cout ;
    let fmt = Format.formatter_of_out_channel cout in
    pp fmt ;
    Format.pp_print_newline fmt () ;
    Format.pp_print_flush fmt () ;
    close_out cout ;
  with err ->
    close_out cout ;
    raise err