Преимущества:
Подходит для:
Вероятно, не подходит для:
В целом я считаю сильными сторонами clojure (без особого порядка):
1) REPL для интерактивного опробования.
2) Все неизменяемо по умолчанию, а изменяемость имеет несколько хорошо подобранных стандартных шаблонов для безопасного изменения состояния в многопоточной среде
3) Хвостовая рекурсия сделана явной. Пока нет надлежащей поддержки хвостовой рекурсии в JVM, это, вероятно, лучший компромисс
4) Очень выразительный язык, в котором функциональный подход предпочтительнее императивного.
5) Очень хорошая интеграция с платформой Java, позволяющая без проблем подключать библиотеки Java
6) Leiningen как инструмент сборки и управления зависимостями вместе с сайтом clojars
Хорошо, пункт 6 не имеет отношения к языку, но определенно к моему удовольствию от его использования.
Что касается приложений, то он нацелен на многопоточные приложения, но, судя по тому, как сейчас обстоят дела, это может означать что угодно, поскольку везде люди пытаются занять все эти ядра, пока пользователь не ждет. С другой стороны, очевидно, многие используют его для развертывания на Google App Engine, который радикально однопотоковый.
Функциональный подход хорошо работает в моем (ограниченном) опыте для реализации преобразований данных и вычислений. Там, где информация и события могут быть "потоковыми" через приложение. Веб-приложения в значительной степени подпадают под эту категорию, где мы "преобразуем" запрос в "ответ".
Но мне все еще приходится использовать его в реальном производственном коде. Сейчас я использую его для личных проектов и прототипирования/бенчмаркинга.