Я пытаюсь выяснить, есть ли простой способ сделать смесь SUBLIS
и backquote в Common Lisp без необходимости писать самостоятельно.SUBLIS и сращивание
Регулярное SUBLIS
даст мне следующий результат: (. Общий случай может быть сколь угодно сложным дерево, не просто список)
CL> (sublis '((X . (1 2 3))) '(bar (foo X)))
(BAR (FOO (1 2 3)))
Но я смотрю в версии что стыки список в замещении, как:
CL> (sublis1 '((X . (1 2 3))) '(bar (foo X)))
(BAR (FOO 1 2 3))
как это происходит на обратной кавычки и запятая-atsign:
CL> (let ((x (list 1 2 3))) `(bar (foo ,@x)))
(BAR (FOO 1 2 3))
Каждый фрагмент кода может иметь ошибки, если для выполнения задания существует основная функция, лучше было бы использовать его вместо написания нового. Это реальная причина вопроса. Мы все можем придумать, как написать функцию sublis1. –
Точно, извините за неясность: идея заключалась не в том, чтобы попросить реализацию 'sublis1' (я подумал, что это будет не сложно), но чтобы увидеть, есть ли там простое решение, битва проверена и т. Д. спасибо за реализацию! –