(load "../lang/dlambda.lisp") (load "../lang/functions.lisp") (defmacro keys (&rest fields) (list 'let (mapcar 'list fields) '(dlambda (:get (field) (eval field)) (:set (field value) (set field value))))) (defun process-data (data) (let ((one (call data :get 'one)) (two (call data :get 'two)) (three (call data :get 'three))) (list one two three))) (setq data (keys one two three)) (call data :set 'one "goodbye") (call data :set 'two "key") (call data :set 'three "!") (process-data data)