A Pretty Expressive Printer (with Appendices)

October 02, 2023 Β· Declared Dead Β· πŸ› arXiv.org

πŸ‘» CAUSE OF DEATH: Ghosted
No code link whatsoever

"No code URL or promise found in abstract"

Evidence collected by the PWNC Scanner

Authors Sorawee Porncharoenwase, Justin Pombrio, Emina Torlak arXiv ID 2310.01530 Category cs.PL: Programming Languages Citations 1 Venue arXiv.org Last Checked 4 months ago
Abstract
Pretty printers make trade-offs between the expressiveness of their pretty printing language, the optimality objective that they minimize when choosing between different ways to lay out a document, and the performance of their algorithm. This paper presents a new pretty printer, $Ξ _e$, that is strictly more expressive than all pretty printers in the literature and provably minimizes an optimality objective. Furthermore, the time complexity of $Ξ _e$ is better than many existing pretty printers. When choosing among different ways to lay out a document, $Ξ _e$ consults a user-supplied cost factory, which determines the optimality objective, giving $Ξ _e$ a unique degree of flexibility. We use the Lean theorem prover to verify the correctness (validity and optimality) of $Ξ _e$, and implement $Ξ _e$ concretely as a pretty printer that we call PrettyExpressive. To evaluate our pretty printer against others, we develop a formal framework for reasoning about the expressiveness of pretty printing languages, and survey pretty printers in the literature, comparing their expressiveness, optimality, worst-case time complexity, and practical running time. Our evaluation shows that PrettyExpressive is efficient and effective at producing optimal layouts. PrettyExpressive has also seen real-world adoption: it serves as a foundation of a code formatter for Racket.
Community shame:
Not yet rated
Community Contributions

Found the code? Know the venue? Think something is wrong? Let us know!

πŸ“œ Similar Papers

In the same crypt β€” Programming Languages

Died the same way β€” πŸ‘» Ghosted