(defun foo (stream dispchar char) (declare (ignore dispchar char)) (loop repeat 5 do (read-char stream) finally (return nil))) (set-dispatch-macro-character #\# #\G 'foo) (let ((*read-suppress* t)) (read-from-string "(list #G1(((()")) ;=> error on CCL, NIL on SBCL (let ((*read-suppress* t)) (read-from-string "(list #H1(((()")) ;=> error on CCL, error on SBCL