2010/08/27

PAIP debug, dbg, dbug-indent

実用 Common Lisp の P.116 にあるデバッグ用のツールです。
すごく便利だったので、gauche で書いて使えるようにしてみました。
;; debug tools
;; PAIP(実用 Common Lisp) - P.116 - 4.10
(define-module liv.debugs
(use srfi-1)
(use gauche.parameter)
(export-all))
(select-module liv.debugs)
(define *dbg-ids* (make-parameter '()))
;; (define (dbg id format-string . args)
;; (when (member id (*dbg-ids*))
;; (let1 port (current-error-port)
;; (newline port)
;; (apply format port format-string args))))
(define dbg (cut debug-indent <> 0 <> <...>))
(define (debug . ids)
(*dbg-ids* (lset-union eq? ids (*dbg-ids*))))
(define (undebug . ids)
(*dbg-ids* (if (null? ids)
'()
(lset-difference eq? (*dbg-ids*) ids))))
(define (debug-indent id indent format-string . args)
(when (member id (*dbg-ids*))
(let1 port (current-error-port)
(newline port)
;; (dotimes (i indent (display " " port)))
(display (apply string-append (make-list indent " ")) port)
(apply format port format-string args))))
(provide "liv/debugs")
view raw debug.scm hosted with ❤ by GitHub

library の lib なら liv じゃなくて lib でしょう。valvallow の library ということで liv でいいかな、などと。

実用 Common Lisp (IT Architects’Archive CLASSIC MODER)

0 件のコメント:

コメントを投稿