def (stack) (tag 'stack nil) mac (push! x s) :qcase `(isa stack ,s) `(push! ,x (rep ,s)) mac (pop! s) :qcase `(isa stack ,s) `(pop! (rep ,s)) def (empty? s) :case (isa stack s) (empty? rep.s)