(defmacro define-namespace (name variable-name &key (test 'eq)) (alexandria:with-gensyms (key value) `(progn (defvar ,variable-name (make-hash-table :test ',test)) (defun ,name (,key) (gethash ,key ,variable-name)) (defun (setf ,name) (,value ,key) (setf (gethash ,key ,variable-name) ,value)) ',name))) (define-namespace recipe *recipes*) (setf (recipe 'blueberry-pie) '(flour sugar butter blueberries)) (recipe 'blueberry-pie) => (flour sugar butter blueberries)