;; util (define call/cc call-with-current-continuation) (define-macro (push stack thing) `(set! ,stack (cons ,thing ,stack))) (define-macro (pop stack) `(let ((top (car ,stack))) (set! ,stack (cdr ,stack)) top))