A variant of the Wadler-Leijen pretty-printer that allows arbitrary semantic annotations