diff --git a/collects/unstable/debug.ss b/collects/unstable/debug.ss new file mode 100644 index 0000000000..b614fbbfe3 --- /dev/null +++ b/collects/unstable/debug.ss @@ -0,0 +1,18 @@ +#lang scheme/base + +(provide debug) + +;; printf debugging convenience +(define-syntax debug + (syntax-rules () + [(_ (f . args)) + (begin (printf "starting ~a~n" 'f) + (let ([l (list . args)]) + (printf "arguments are:~n") + (for/list ([arg 'args] + [val l]) + (printf "\t~a: ~a~n" arg val)) + (let ([e (apply f l)]) + (printf "result was ~a~n" e) + e)))] + [(_ f . args) (debug (f . args))])) \ No newline at end of file diff --git a/collects/unstable/scribblings/debug.scrbl b/collects/unstable/scribblings/debug.scrbl new file mode 100644 index 0000000000..ff7bf79ae7 --- /dev/null +++ b/collects/unstable/scribblings/debug.scrbl @@ -0,0 +1,25 @@ +#lang scribble/doc +@(require scribble/base + scribble/manual scribble/eval + "utils.ss" + (for-label unstable/debug + scheme/serialize + scheme/contract + scheme/base)) + +@title[#:tag "debug"]{Debugging} +@(define the-eval (make-base-eval)) +@(the-eval '(require unstable/debug)) + +@defmodule[unstable/debug] + +@unstable-header[] + +@defform*[[(debug (f args ...)) + (debug f args ...)]]{ +Produce debugging output for the application of @scheme[f], including the values of @scheme[args]. +@examples[#:eval the-eval +(debug (+ 3 4 (* 5 6))) +(debug + 1 2 3) +] +}