When printing inside a list, the :suffix argument to
pprint-logical-block suppresses printing of other
items in the logical-block.
Below is a print-object method which prints structures
of type S which have a single slot A, using prefix and
suffix square brackets as: [S slot-a]
(defstruct s a)
(defmethod print-object ((o s) stream)
(pprint-logical-block (stream
nil :prefix "[" :suffix "]")
(princ "S " stream)
(princ (s-a o) stream)))
(make-s :a 1)
=> [S 1] ; correct
(list (make-s :a 1))
=> (]) ; incorrect, should be ([S 1])
Note: This bug is dependent only on the presence of a
non-NIL :suffix argument; the :prefix argument has no
effect.
[21]> (lisp-implementation-version)
"2.39 (2006-07-16) (built on stnt067 [192.168.0.1])"
[22]> (machine-type)
"PC/386"
[23]> (machine-version)
"PC/686"
Running on Windows XP SP2.