Автор полностью переписал генератор статического сайта на Clojure — прямо после того, как переписал его же на GNU Make и shell. Признаёт: у него проблема, но это традиция: учить новый язык, делая на нём сайт. И после месяца работы с Clojure он поделился впечатлениями.
Что понравилось. Clojure ощущается куда более цельным, чем Common Lisp. Тот собирали в начале 80-х как компромисс между существовавшими тогда Lisp-диалектами, так что там всего намешано: mapcar вместо map, remove-if-not с двойным отрицанием вместо filter. В Clojure всё проще: абстракция seq позволяет не думать, с каким именно типом последовательности работаешь. Не надо помнить aref для массивов и nth для списков — везде работает nth. Сравнение тоже унифицировано: вместо кучи разных eq, eql, equal и equalp можно вызывать = (или == для чисел, или identical? для проверки идентичности). Оговорки есть, но за месяц автор с ними не столкнулся.
Scheme, напротив, слишком минималистична: базовая функциональность вроде обработки ошибок, работы с файлами и даже хеш-таблиц отсутствует в ядре. Clojure же pragmatichna: большая стандартная библиотека, плюс работает на JVM — для любой задачи найдётся готовая библиотека.
Структуры данных — ещё один плюс. В других Lisp списки — основа всего, но в реальности нужны и векторы, и словари. Clojure делает их полноценными и удобными: четыре базовых типа — списки, векторы, хеш-таблицы и множества — поддерживаются на уровне языка одинаково хорошо.
Но есть и минусы. Синтаксиса в Clojure, как ни странно, слишком много: (), [], {}, #{}, особое значение точек и слэшей в именах, и особенно раздражающий поначалу синтаксис обратных кавычек с ~. К концу месяца автор привык, но концы блоков (]}]})}) всё равно раздражают.
Второй минус: Clojure — hosted-язык, то есть живёт на JVM. А автор не знает Java ни капли. Пока удаётся обходиться, но чувство, что надо учить Java, не отпускает. Интероп он худо-бедно освоил.
Тем не менее автор остаётся с Clojure: язык весёлый, удобный, а с проектами вроде babashka ещё и быстрый для скриптов. Для практики он решает Project Euler на Clojure.