Подтвердить что ты не робот

Есть ли Clojure DSL?

Есть ли какой-либо DSL (Domain Specific Language), реализованный в Clojure?

4b9b3361

Ответ 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-бот с аркой плагинов)

Ответ 2

SQL DSL в Clojure, немного старый, но может быть витриной

Ответ 3

Полезный разговор о том, как создавать DSL с помощью clojure из конференции clojure -conj 2010 года создателем Enlive, Christophe Grand: http://blip.tv/clojure/christophe-grand-not-dsl-macros-4540700 (слайды здесь).

Я бы также подсчитал дизайн Ring, как в домене DSL-дизайна. См. Разговор создателя Рика Марка Макграрана: http://clojure.blip.tv/clojure/mark-mcgranaghan-one-ring-to-bind-them-4724955 (slides)