#?=

read関数の引数がいけなかったらしい。

(defmacro debug-print (form)
  (with-gensyms (l v i)
    `(progn
       (format t "~&#?= ~S~%" ',form)
       (let ((,l (multiple-value-list ,form)))
         (loop
           for ,v in ,l
           and ,i = 0 then (1+ ,i)
           do (format t "~&#?~[-~:;+~]     ~A" ,i ,v))
         (values-list ,l)))))

(set-dispatch-macro-character #\# #\?
  #'(lambda (s c1 c2)
      (declare (ignore c1 c2))
      (read-char s)
      `(debug-print ,(read s t nil t))))

ついでに多値対応。
行番号の取得方法って何かあるのかな。