(= call-stack* (thread-local)) (= (call-stack*) (list)) (let old-fn fn (mac fn (args . body) (w/uniq (name ret) `(,old-fn ,args (push (list ,name ,body) (call-stack*)) (let ,ret (do ,@body) (pop (call-stack*)) ,ret)))))