(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)) ) ) ) )