(defun gross-hack (x &aux res) "Collect all symbols in the s-expression `x'." (with-standard-io-syntax (let ((default-table (copy-pprint-dispatch nil)) (*print-pprint-dispatch* (copy-pprint-dispatch nil)) (*print-pretty* t) (*print-circle* t) (*print-length* nil) (*print-level* nil)) (set-pprint-dispatch 't (lambda (stream object) (if (symbolp object) (pushnew object res) (funcall (pprint-dispatch object default-table) stream object)))) (pprint x (make-broadcast-stream)) res)))