У меня есть около двух макросов (и лазание) в моей кодовой базе, которые выглядят так:
(defmacro def-stat-method (method-name stat)
`(progn
(defmethod ,method-name ((monster monster))
(getf (stats monster) ,stat))
(defmethod (setf ,method-name) (value (monster monster))
(setf (getf (stats monster) ,stat) value))))
и это:
(defmacro def-energy-method (method-name stat)
`(progn
(defmethod ,method-name ((monster monster))
(getf (energies monster) ,stat))
(defmethod (setf ,method-name) (value (monster monster))
(setf (getf (energies monster) ,stat) value))))
Каждый из макросов имеет следующий синтаксис вызова: (def-stat-method ranged-weapon :ranged-weapon)
Я бы хотел макрос (def-foo-method macro-name method)
, который расширяется до соответствующих макросов, так что (def-foo-method def-stat-method stats)
расширяется до первого примера выше. Я начинающий новичок и не знаю, как это сделать. Вся помощь приветствуется.