Welcome to the CHICKEN Scheme pasting service
debug-logging pasted by DerGuteMoritz on Fri Sep 23 12:02:41 2011
(module debug-logging
(current-debug-port debug-log-prefix debug)
(import chicken scheme)
(define current-debug-port
(make-parameter (current-output-port)))
(define debug-log-prefix
(make-parameter "[DEBUG] "))
(import-for-syntax (only extras fprintf))
(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)))))
)test.scm pasted by DerGuteMoritz on Fri Sep 23 12:03:47 2011
(module debug-test (test) (import chicken scheme) (use debug-logging) (define (test) (debug "hey") (print (* 10 10)) (debug "yo")) ) (import debug-test) (test)
csi vs. csc pasted by DerGuteMoritz on Fri Sep 23 12:07:41 2011
$ csi -D debug-logging-on -s test.scm [DEBUG] hey 100 [DEBUG] yo $ csc -D debug-logging-on test.scm $ ./test Error: unbound variable: fprintf
working but unhygienic version pasted by DerGuteMoritz on Fri Sep 23 12:11:58 2011
(module debug-logging
(current-debug-port debug-log-prefix debug)
(import chicken scheme)
(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
(use (only extras fprintf))
(display (debug-log-prefix) (current-debug-port))
(fprintf (current-debug-port) fmt args ...)
(newline (current-debug-port)))
(else)))))
)hygienic by means of gensym pasted by DerGuteMoritz on Fri Sep 23 12:20:05 2011
(module debug-logging
(current-debug-port debug-log-prefix debug)
(import chicken scheme)
(define current-debug-port
(make-parameter (current-output-port)))
(define debug-log-prefix
(make-parameter "[DEBUG] "))
(define-syntax debug
(ir-macro-transformer
(lambda (x i c)
(let ((fprintf (gensym)))
`(cond-expand
(debug-logging-on
(use (rename extras (fprintf ,fprintf)))
(display (debug-log-prefix) (current-debug-port))
(,fprintf (current-debug-port) . ,(cdr x))
(newline (current-debug-port)))
(else))))))
)FINAL STABLE HYGIENIC PRO 2011 pasted by DerGuteMoritz on Fri Sep 23 12:31:39 2011
(module debug-logging
(current-debug-port debug-log-prefix (debug fprintf display newline))
(import chicken scheme)
(use (only extras fprintf))
(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)))))
)FINAL STABLE HYGIENIC PRO 2011 PLUS pasted by DerGuteMoritz on Fri Sep 23 12:37:41 2011
(module debug-logging
(current-debug-port debug-log-prefix debug)
(import chicken scheme)
(use (only extras fprintf))
(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)))))
)debug* for increased delight pasted by DerGuteMoritz on Fri Sep 23 15:51:17 2011
(module debug-logging
(current-debug-port debug-log-prefix
(debug display-prefix) (debug* display-prefix))
(import chicken scheme)
(use (only extras fprintf))
(define current-debug-port
(make-parameter (current-output-port)))
(define debug-log-prefix
(make-parameter "[DEBUG] "))
(define (display-prefix)
(display (debug-log-prefix) (current-debug-port)))
(define-syntax debug
(syntax-rules ()
((_ fmt args ...)
(cond-expand
(debug-logging-on
(display-prefix)
(fprintf (current-debug-port) fmt args ...)
(newline (current-debug-port)))
(else)))))
(define-syntax debug*
(syntax-rules ()
((_ args ... last)
(cond-expand
(debug-logging-on
(begin
(display-prefix)
(pp args (current-debug-port))) ...
(let ((last* last))
(display-prefix)
(pp last* (current-debug-port))
last*))
(else last)))))
)REALLY final debug-logging version? added by DerGuteMoritz on Fri Sep 23 15:57:52 2011
(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)))))
)