From: Sam S. <sd...@gn...> - 2009-09-23 17:30:44
|
Tobias C. Rittweiler wrote: > [1]> (defun dispatch-macro-char-p (char rt) > (handler-case (prog1 t > (get-dispatch-macro-character char #\x rt)) > (error () nil))) > DISPATCH-MACRO-CHAR-P > [2]> (dispatch-macro-char-p #\$ (copy-readtable nil)) > NIL > [3]> (compile 'dispatch-macro-char-p) > DISPATCH-MACRO-CHAR-P ; > NIL ; > NIL > [4]> (dispatch-macro-char-p #\$ (copy-readtable nil)) > T confirmed. the reason is that the compiler folds the get-dispatch-macro-character call because the function is marked as seclass_read. (this is done in c-DIRECT-FUNCTION-CALL). I wonder if all functions which can signal errors should be marked as *seclass-dirty*... Sam. |