Ответ 1
Как и любой диалект Lisp, Clojure рисует очень нечеткую линию между API и DSL, и поэтому термин не содержит ту же мистику, что и на других языках. Lisp программисты склонны писать свои программы в виде слоев DSL, каждый слой обслуживает их выше. Сказав это, вот несколько из них, которые вы могли бы сказать, отображали нетривиальные уровни DSL (без особого порядка):
- Enlive (шаблоны HTML)
- LazyTest (модульное тестирование)
- fnparse (генератор синтаксического анализатора)
- Midje (тестирование и издевательство)
- byte-spec (бинарные форматы)
- Vijual (график)
- Trammel (программирование ограничения)
- Cascalog (синтаксис Hadoop w/datalog)
- Incanter (R-подобная среда)
- Sandbar (HTML-сессии, формы, auth)
- ClojureQL (SQL)
- mini-kanren (встроенное логическое программирование)
- Leiningen (инструмент сборки)
- sexpbot (IRC-бот с аркой плагинов)