Version: 4.1.4.1
6 Debugging tools
|  (require (planet untyped/unlib/debug)) | 
Utilities for printing the runtime values of variables for debugging purposes, with minimal disruption to code structure.
| (debug-enabled?) → boolean? | 
| (debug-enabled? val) → void? | 
|   val : boolean? | 
Boolean parameter for enabling or disabling the printing of debugging information. Defaults to #t.
| (current-debug-printer) → (-> string? any void?) | 
| (current-debug-printer proc) → void? | 
|   proc : (-> string? any void?) | 
Parameter controlling the formatting of printed debugging information. Value must be a procedure that takes a message and a value and returns void. The default value prints the message and a colon on one line and pretty-prints the value (slightly indented) on subsequent lines.
| (debug val) → any | 
|   val : any | 
Prints val and returns it transparently.
Examples:  | 
|   > (length (debug "square" |  |                    (for/list ([j '(1 2 3 4 5)]) |  |                      (for/list ([i '(1 2 3 4 5)]) |  |                        i)))) |  
  | 
  square:  |      ((1 2 3 4 5)  |       (1 2 3 4 5)  |       (1 2 3 4 5)  |       (1 2 3 4 5)  |       (1 2 3 4 5))  |  
  | 
  5  | 
| (debug* proc arg ...) → any | 
|   proc : procedure? | 
|   arg : any | 
Applies proc to args and prints and returns the return value transparently.
Examples:  | 
|   > (add1 (debug* "message" * 2 2)) | 
 | 
  5  | 
Expands to a define form that prints the value of id as a side effect.
Examples:  | 
|   > (define/debug test-data |  |       (+ 1 2 3)) |  
  | 
 | 
| (define-values/debug (id ...) expr) | 
Like define/debug but expands to a define-values form.
Examples:  | 
|   > (define-values/debug (a b) |  |       (values (+ 1 2) (+ 3 4))) |  
  | 
 | 
| (let/debug ([id expr] ...) expr ...) | 
Expands to a let form that prints the value of each id as it is assigned.
Examples:  | 
|   > (let/debug ([a 1] [b 2]) |  |       (+ a b)) |  
  | 
 | 
  3  | 
| (let*/debug ([id expr] ...) expr ...) | 
Like let/debug but expands to a let* form.
| (letrec/debug ([id expr] ...) expr ...) | 
Like let/debug but expands to a letrec form.
| (let-values/debug ([(id ...) expr] ...) expr ...) | 
Expands to a let-values form that prints the value of each id as it is assigned.
Examples:  | 
|   > (let-values/debug ([(a b) (values 1 2)] [(c d) (values 3 4)]) |  |       (+ a b c d)) |  
  | 
  (a b):  |      (1 2)  |    (c d):  |      (3 4)  |  
  | 
  10  | 
| (let*-values/debug ([(id ...) expr] ...) expr ...) | 
Like let-values/debug but expands to a let*-values form.
| (letrec-values/debug ([(id ...) expr] ...) expr ...) | 
Like letrec-values/debug but expands to a letrec-values form.
| (with-pretty-indent prefix expr ...) | 
Parameterizes the pretty-print-print-line parameter to a procedure that acts the same as the default, except that every line is prefixed with prefix. prefix must be a string.
Examples:  | 
|   > (define square |  |       (for/list ([j '(1 2 3 4 5)]) |  |         (for/list ([i '(1 2 3 4 5)]) |  |           i))) |  
  | 
|   > (pretty-print square) | 
  ((1 2 3 4 5)  |     (1 2 3 4 5)  |     (1 2 3 4 5)  |     (1 2 3 4 5)  |     (1 2 3 4 5))  |  
  | 
|   > (with-pretty-indent "..." |  |       (pretty-print square)) |  
  | 
  ...((1 2 3 4 5)  |    ... (1 2 3 4 5)  |    ... (1 2 3 4 5)  |    ... (1 2 3 4 5)  |    ... (1 2 3 4 5))  |  
  | 
| (exn-context exn) → (listof symbol?) | 
|   exn : exn? | 
Returns a printable form of the continuation marks of exn that can can be used with pretty-print to produce simple, legible debugging output.
| (debug-in string require-spec) | 
require form that behaves like require-spec but prints the imported identifiers using debug.
| (debug-out string require-spec) | 
provide form that behaves like provide-spec but prints the exported identifiers using debug.