(define dg (lambda (x) (let ((im (lambda (c)(if (immutable? c) "immutable" "")))) (cond ((boolean? x) (list "boolean:" x)) ((char? x) (list "char:" x)) ((null? x) "nil") ((symbol? x) (list "symbol:" x)) ((vector? x) (list (im x) "vector:" x)) ((pair? x) (list (im x) "pair:" x)) ((string? x)(list (im x) "string:" x)) ((procedure? x) (if (parameter? x) "parameter procedure" (list "procedure of" (procedure-arity x) "args"))) ((number? x) (list "number:" x)) ((port? x) (if (input-port? x) "input port" "output port")) ; stuff below for MzScheme ((tcp-listener? x) "tcp-listener") ((hash-table? x) (im x) "hash table") ((promise? x) "promise") ((box? x)(list (im x) "box:" )) ((namespace? x) "namespace") ((void? x) "void") (#t (list "??" x))))))