1(define-record-type Stack2 (%make-stack store)3 stack?4 (store stack-store stack-store-set!))56(define (make-stack)7 (%make-stack '()))89(define (stack-clear! stack)10 (stack-store-set! stack '()))1112(define (stack-size stack)13 (length (stack-store stack)))1415(define (stack-empty? stack)16 (zero? (stack-size stack)))1718(define (stack-push stack elem)19 (stack-store-set!20 stack21 (cons elem (stack-store stack))))2223(define (stack-pop stack)24 (let* ((lst (stack-store stack))25 (top (car lst)))26 (stack-store-set! stack (cdr lst))27 top))2829(define (stack-pops stack amount)30 (if (<= amount 1)31 (list (stack-pop stack))32 (cons33 (stack-pop stack)34 (stack-pops stack (dec amount)))))