two_columns via the zipper data structure and caching.two_columns: remove phantom spaces, and adjust costs to ensure optimality.two_columns as experimental.two_columns constructCostFacory.debug to CostFactory.string_of_costReorganize pretty printing functions:
Printer.Make.print to Printer.Make.pretty_format_info (with slightly different signature)Printer.Make.pretty_print to Printer.Make.pretty_formatPrinter.Make.pretty_print, Printer.Make.pretty_print_info, and Printer.Make.pretty_format_debug.Printer.Make.pretty_print(*) is suitable for printing to a channel. Printer.Make.pretty_format(*) is suitable for printing as a string. The suffix _info indicates that it returns debugging information.<> to ^^ to avoid shadowing the not equal operator (thanks to @EmileTrotignon who made the suggestion in the OCaml forum).