The documentation of
cl-format claims that it is fully compatible with the CL version of format. However, in CL the
~A directive (print aesthetically) pretty-prints the corresponding argument. For example
(format out "~A" some-list) outputs the same as
(pprint some-list out) However, in clojure
(cl-format out "~A" some-list) outputs the contents of some-list all on a single line.
Does anyone know whether it is possible to make this work correctly? I've seen the dynamic variable print-pretty which seems to have no effect on
After a bit of searching, I've found what I think is the culprit. According to line 1338 of
cl_format.clj it seems
~A dispatches unconditionally to
print-str rather than to some form of
pprint-to-str. I suspect that is a bug, because I don't see any comment there explaining how the pretty-printer is intended to be triggered here.
It seems like it should use something like
(fn [data] (with-out-str (pprint data)) rather than