Ask HN: Is there an easy example of a Lisp pretty-printer?
Do any gray-bearded Lisp programmers remember some old Lisp or Scheme example code that I could study?
Do any gray-bearded Lisp programmers remember some old Lisp or Scheme example code that I could study?
[0] https://homepages.inf.ed.ac.uk/wadler/papers/prettier/pretti...
Here is an article on a pretty printer written in Pico Lisp: https://picolisp.com/wiki/?prettyPrint
I attempted to also include all the helper functions which are not standard lisp manually.
print and println put a space between arguments when printing prin and prinl do not. The ones with an l do line breaks, the others not.
pretty prints it's first argument and the second number is an optional argument what level of indentation to start with.
But that's not the problem, I have troubles dealing with line-breaks. They are currently not intelligent enough, e.g. a list may break directly after an opening parenthesis even if the whole list would fit on the next line + indentation. It seems that a good pretty printer needs to look ahead?
Anyway, looking for a simple clean example. Just a function recursing into a list and formatting it as code with a fixed margin and without using any fancy formatting instructions would be very instructive.