RosettaCodeData/Task/Stack/Scheme/stack.ss

16 lines
450 B
Scheme
Raw 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)))))