28 lines
899 B
Common Lisp
28 lines
899 B
Common Lisp
(load "dlambda.lisp")
|
|
|
|
(defun fruit-counter (initial-count)
|
|
|
|
(let ((apple-count initial-count)
|
|
(banana-count initial-count)
|
|
(coconut-count initial-count))
|
|
|
|
(eval
|
|
(dlambda
|
|
(:inc-apple () (setf apple-count (+ apple-count 1)))
|
|
(:dec-apple () (setf apple-count (- apple-count 1)))
|
|
(:get-apple () apple-count)
|
|
(:set-apple (value) (setf apple-count value))
|
|
(:inc-banana () (setf banana-count (+ banana-count 1)))
|
|
(:dec-banana () (setf banana-count (- banana-count 1)))
|
|
(:get-banana () banana-count)
|
|
(:set-banana (value) (setf banana-count (- banana-count 1)))
|
|
(:inc-coconut () (setf coconut-count (+ coconut-count 1)))
|
|
(:dec-coconut () (setf coconut-count (- coconut-count 1)))
|
|
(:get-coconut () coconut-count)
|
|
(:set-coconut (value) (setf coconut-count value))
|
|
)
|
|
)
|
|
|
|
)
|
|
)
|