Немного предыстории, я абсолютный новичок, только начал несколько недель назад, но я развивался в других языках в течение многих лет. Логика без проблем, лисп, проблема.
Я пытаюсь написать макрос, который определит два класса clsql для меня, чтобы обойти проблему с библиотекой. Мне бы хотелось, чтобы классы были названы x
и `x-insert``, поэтому внутри макроса я бы хотел, чтобы макрос вычислял имя символа x-insert, но у меня возникли сложности с этим. Моя попытка ниже, но я нахожусь в тупике на две вещи.
Как мне получить это, чтобы создать имена классов. Если я удаляю пробел в ,class -insert
, он не будет eval, что я понимаю, поэтому я предполагаю, что упускаю какой-то простой способ сказать ему игнорировать пробел и создать имя как одно слово, и вторая проблема заставить его создать два класса, а не один, так как он расширяет только последнюю часть макроса по сравнению с тем, что я вижу при использовании макроса.
Возможно, я все делаю неправильно, поэтому не стесняйтесь пнуть меня в правильном направлении.
(defmacro gen-pair (class base-slots pkey-slot base-table)
`(clsql:def-view-class ,class -insert()
(
,base-slots
)
(:base-table ,base-table)
)
`(clsql:def-view-class ,class (,class -insert)
(
,pkey-slot
)
(:base-table ,base-table)
)
)