- Code: Select all
(defun make-obj ()
(let ((data :my-whatever))
(list
:get-data (lambda ()
data)
:set-data (lambda (d)
(setf data d)))))
(defun get-data (obj)
(funcall (getf obj :get-data)))
(defun set-data (obj d)
(funcall (getf obj :set-data) d))
I use this macro for each item in the property list to create access functions:
- Code: Select all
(defmacro make-property (name&args)
(destructuring-bind (name args) name&args
(let ((g (gensym)))
`(progn
(defun ,(new-symbol (symbol-name name)) (obj ,@args)
(destructuring-bind ,args (rest ,g)
(apply (getf obj ,name) (WHAT-GOES-HERE?))))))))
WHAT-GOES-HERE? is the problem. Anybody have any suggestions?

