Есть желание написать макрос, что бы не приходилось часто писать конструкции вида (let ((head (car list)) (tail (cdr list))) код). Но возникли следующие проблемы:
(defmacro xxs (lst head tail &rest body)
`(let ((,head (car ,lst))
(,tail (cdr ,lst)))
,body))
(xxs '(1 2 3) 'x 'xs
'(+ x (car xs)))
Выдаётся следующая ошибка:
LET: illegal variable specification #1=('X (CAR '(1 2 3)))
Суть ошибки вроде бы ясна, а вот способ решения не придумать.
Так же не знаю как можно расположить дерективы &option &key &rest, что бы в функции можно было бы указывать по желанию имена head и tail.