2010-10-19 10 views

Répondre

67

Comme tout dialecte Lisp, Clojure dessine une ligne très floue entre API et DSL et donc le terme ne tient pas la même mystique qu'il fait dans autres langues. Les programmeurs Lisp ont tendance à écrire leurs programmes sous forme de couches de DSL, chaque couche servant les couches supérieures. Cela dit, voici quelques-unes que vous pourriez dire que l'affichage des niveaux non négligeables de-ness DSL (sans ordre particulier):

+2

Oh wow! Merci David. – fogus

+1

Grande liste! On pourrait aussi considérer le leiningen comme un DSL – Jonas

+0

Bien que ce ne soit certainement pas un «bon» exemple de DSL, la macro defplugin de mon robot IRC est un DSL pour créer des plugins sexpbot. Vous pouvez en trouver des exemples dans src/sexpbot/plugins et l'implémentation réelle dans src/sexpbot/respond.clj. Vous pouvez l'ajouter à la liste si vous le souhaitez. Je préfère ne pas créer une toute nouvelle réponse juste pour l'ajouter, puisque le vôtre est si excellent. – Rayne

7

SQL DSL dans Clojure, un peu vieux, mais peut être une vitrine

+2

Celui-ci est impressionnant. Il m'a indiqué l'importance de cette langue ... –

+0

Le lien semble avoir changé. – nha

+0

lien fixe pour pointer vers archive.org –

3

Un exposé utile sur la réflexion sur la façon de construire DSLs en utilisant clojure de la conférence 2010 clojure-conj par le créateur de Enlive, Christophe Grand: http://blip.tv/clojure/christophe-grand-not-dsl-macros-4540700 (diapositives sont here) .

Je voudrais également compter le design de Ring comme dans le domaine de la conception DSL. Voir la discussion par le créateur de Ring, Mark McGranaghan: http://clojure.blip.tv/clojure/mark-mcgranaghan-one-ring-to-bind-them-4724955 (slides)