¿Hay algún DSL (lenguaje específico de dominio) implementado en Clojure?¿Hay alguna DSL Clojure?
Respuesta
Como cualquier dialecto de Lisp, Clojure dibuja una línea muy difusa entre el API y el DSL y por lo tanto el término no tiene la misma mística que lo hace en otros idiomas. Los programadores de Lisp tienden a escribir sus programas como capas de DSL, cada capa sirve a los que están por encima de ella. Una vez dicho esto, aquí hay unos pocos que se podría decir de visualización de niveles no triviales de DSL-dad (en ningún orden en particular):
- Enlive (plantillas HTML)
- LazyTest (Prueba de la unidad)
- fnparse (generador de analizadores sintácticos)
- Midje (prueba & burla)
- byte-spec (binarios-formatos)
- Vijual (diseño gráfico)
- Trammel (programación con restricciones)
- Cascalog (Hadoop w/sintaxis de registro de datos)
- Incanter (entorno de R-like)
- Sandbar (sesiones HTML, formas, auth)
- ClojureQL (SQL)
- mini-kanren (programación lógica incrustado)
- Leiningen (herramienta de construcción)
- sexpbot (bot de IRC con arco de plug-in)
una charla útil en pensar acerca de cómo construir DSL utilizando clojure de la conferencia clojure-conj 2010 por el creador de Enlive, Christophe Grand: http://blip.tv/clojure/christophe-grand-not-dsl-macros-4540700 (diapositivas son here) .
También consideraría el diseño de Ring como en el dominio del diseño de DSL. Vea la charla del creador de Ring, Mark McGranaghan: http://clojure.blip.tv/clojure/mark-mcgranaghan-one-ring-to-bind-them-4724955 (slides)
- 1. Programación Clojure "DSL"
- 2. DSL para la síntesis de imágenes Clojure
- 3. Representación intermedia para Lisp/Clojure DSL
- 4. ¿Hay algún DSL de Scala para GUI?
- 5. ¿Hay una DSL para escribir expresiones regulares?
- 6. ¿Hay alguna convención de Clojure para nombrar funciones privadas?
- 7. Clojure- ¿Por qué este código no funciona en Clojure, hay alguna evaluación floja? ¿Me falta?
- 8. Microsoft Visual Studio SDK DSL Tools - ¿Alguna toma en serio?
- 9. ¿Hay utilidades DSL de fecha/hora en Scala?
- 10. OCaml para JVM. ¿Hay alguna?
- 11. ¿Hay algún Principio de Clojure?
- 12. Camel - extender Java DSL?
- 13. DSL en Finanzas
- 14. Elección del marco DSL
- 15. ¿Hay un REPL de color para Clojure?
- 16. Sintaxis DSL adecuada
- 17. Cómo interpretar Gradle DSL
- 18. DSL en Clojure que reemplaza una solución de software orientada a objetos?
- 19. Encuadernación FFI y DSL
- 20. ¿Hay alguna manera de mostrar paso a paso cómo evalúa Clojure una función?
- 21. ¿Hay alguna manera de obtener una colección de formularios especiales de clojure programáticamente?
- 22. ¿Hay alguna función de aplicación en las funciones de Clojure para Java?
- 23. ¿Hay alguna diferencia entre la sintaxis fn y # para funciones anónimas en Clojure?
- 24. DSL interesantes, implementados en Scala?
- 25. ¿Hay una biblioteca AES para clojure?
- 26. ¿Hay buenos puntos de referencia de Clojure?
- 27. ¿Hay alguna ScalaConsole?
- 28. Método Clojure Falta
- 29. ¿Hay alguna forma de generar programáticamente bytecode de Python?
- 30. Creación de DSL externas efectivas
¡Oh, guau! Gracias David. – fogus
¡Gran lista! También se podría considerar que leiningen es un DSL – Jonas
. Aunque ciertamente no es un "buen" ejemplo de DSL, la macro defplugin de mi bot IRC es una DSL para crear plugins de sexpbot. Puede encontrar ejemplos de esto en uso en src/sexpbot/plugins y la implementación real en src/sexpbot/respond.clj. Puede agregarlo a la lista si lo desea. Prefiero no crear una respuesta completamente nueva solo para agregarla, ya que la tuya es tan excelente. – Rayne