プログラミング Gauch - 17 章 フラグで切り分けてみる

よくないと思いつつ、フラグで動作を切り分けた。


(define-method apply-generic ((gf ) args)
(inc! (ref gf 'counter))
(with-time-counter (ref gf 'time) (next-method gf (cons '#f args))))
next-method を呼ぶ際に #f か #t を引数の先頭に付加してみる*1。そして

(define-method apply-generic ((gf ) args)
(let ((return-value (next-method gf (cdr args))))
(if (not (car args))
(begin
(format #t "args: ~s\n" args)
(format #t "result: ~s\n" return-value)))
return-value))
こんな感じで切り分け。うーん、他に思いつかない orz

*1:ここはドットを使った可変長引数にできないものか