;laat ik starten met de functionele stack
(define (create-stack)
(let ((stack (make-stack)))
(define (push e)
(set! stack (stack-push e stack)))
(define (pop)
(set! stack (stack-pop stack)))
(define (empty?)
(stack-empty? stack))
(define (dispatch mesg)
(cond ((eq? mesg 'pop) pop)
((eq? mesg 'push) push)
((eq? mesg 'empty?) empty?)
(else (error "aargl"))))
dispatch))
;en dan nu als de interface destructief is
(define (create-stack)
(let ((stack (make-stack)))
(define (push e)
(stack-push e stack))
(define (pop)
(stack-pop stack))
(define (empty?)
(stack-empty? stack))
(define (dispatch mesg)
(cond ((eq? mesg 'pop) pop)
((eq? mesg 'push) push)
((eq? mesg 'empty?) empty?)
(else (error "aargl"))))
dispatch))