実装方針
6/6
(import (scheme base)
(scheme write)
….
)
(import (except (scheme base) define)
(only (orange-paren hack-expression)
define)
(scheme write)
….
)
importを投げると改造したマクロが名前空間に挿入される
(define log ‘())
(define-syntax define
(syntax-rules ()
((_ (proc-name ……
(define (proc-name . args)
(with-exception-handler
(lambda (object)
(set-log! log proc-name args))
※ 実際には末尾呼び出し最適化を殺さないように外側の一回だけ例外キャッチする