<logger-generic>のログ出力のon/offを切り替えられるようにする.
<logger-generic>クラスにprintingスロットを追加してその真偽で処理を分ければよい.
printingスロットの値を後で変えられるようにprinting!メソッドとnot-printing!メソッドも追加した.
(define-class <logger-generic> (<generic>)
((printing :init-value #t)))
(define-method apply-generic ((gf <logger-generic>) args)
(if (ref gf 'printing)
(begin (format #t "args: ~s\n" args)
(let ((return-value (next-method)))
(format #t "result: ~s\n" return-value)
return-value))
(next-method)))
(define-method not-printing! ((gf <logger-generic>))
(set! (ref gf 'printing) #f))
(define-method printing! ((gf <logger-generic>))
(set! (ref gf 'printing) #t))