racket/collects/unstable/debug.ss
2010-02-19 23:25:14 +00:00

21 lines
734 B
Scheme

#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 (with-handlers ([values (lambda (exn)
(printf "~a raised exception ~a~n" 'f exn)
(raise exn))])
(apply f l))])
(printf "~a result was ~a~n" 'f e)
e)))]
[(_ f . args) (debug (f . args))]))