(define trace F -> (trace-h (gensym f*) (ps F))) (define trace-h F* [defun F Params Body] -> (do (eval-kl [defun F* Params Body]) (eval-kl [defun F Params [do [record F] [F* | Params]]]))) (define record F -> (set *callstack* [F | (trap-error (value *callstack*) (/. E []))])) (define untrace F -> (eval-kl (ps F)))