RosettaCodeData/Task/Stack/Scheme/stack.ss

16 lines
450 B
Scheme
Raw Permalink Normal View History

2013-04-11 01:07:29 -07:00
(define (make-stack)
(let ((st '()))
(lambda (message . args)
(case message
((empty?) (null? st))
((top) (if (null? st)
'empty
(car st)))
((push) (set! st (cons (car args) st)))
((pop) (if (null? st)
'empty
(let ((result (car st)))
(set! st (cdr st))
result)))
(else 'badmsg)))))