Экспериментирую с DSL для описания SQL в виде s-expressions.
На картинке пример SELECT, который поддерживает только указание колонок и таблицы.
В процессе метания между диалектами схемы и common lisp переписывал свой клиент к clickhouse по нескольку раз и мне это немного надоело, хочу попробовать упростить себе жизнь, сделав несколько макросов, которые позволят расширять DSL без изменения кода самой библиотеки.
На подобный подход вдохновило изучение исходников https://common-lisp.net/project/iterate/
Полный листинг: https://github.com/corpix/clx/blob/27b41762ea82377452f14e5fc60fa6a674b8f7ad/src/sql.lisp#L9
Кстати, у меня есть twitter, где я пишу почаще https://twitter.com/iamcorpix