(module debug-logging (current-debug-port debug-log-prefix debug debug*) (import chicken scheme) (use extras) (define current-debug-port (make-parameter (current-output-port))) (define debug-log-prefix (make-parameter "[DEBUG] ")) (define-syntax debug (syntax-rules () ((_ fmt args ...) (cond-expand (debug-logging-on (display (debug-log-prefix) (current-debug-port)) (fprintf (current-debug-port) fmt args ...) (newline (current-debug-port))) (else))))) (define-syntax debug* (syntax-rules () ((_ args ... last) (cond-expand (debug-logging-on (let ((last* last)) (display (debug-log-prefix) (current-debug-port)) (pp (list args ... last*) (current-debug-port)) last*)) (else last))))) )