Hi everybody!
With the code at the end of this mail I would have expected an outcome similar to this one
R: T , E: T - [REFUSED TO PRINT] R: T , E: NIL - [REFUSED TO PRINT] R: NIL, E: T - #<MY-CONDITION 20098B07> R: NIL, E: NIL - My condition occured.
because the standard says that "if *PRINT-READABLY* is true, printing proceeds as if *PRINT-ESCAPE* were also true." This would mean that the first two lines should look the same because the value of *PRINT-ESCAPE* is irrelevant in this case. However, while this is what happens for example with LispWorks, AllegroCL, and CLISP, in some other Lisps like SBCL, CCL, and ECL the second line looks like the fourth.
Isn't that wrong? Or is their interpretation of the standard that the report function is responsible for obeying *PRINT-READABLY*? But how does that fit with the possibility of using strings for :REPORT?
Thanks, Edi.
(define-condition my-condition () () (:report "My condition occured."))
(defun test () (let ((error (make-condition 'my-condition))) (dolist (readably '(t nil)) (dolist (escape '(t nil)) (format t "~&R: ~3A, E: ~3A - " readably escape) (handler-case (write error :readably readably :escape escape) (print-not-readable () (write-string "[REFUSED TO PRINT]")))))))