2010-10-19 30 views

cevap

67

olabilir Clojure API ve DSL ve bu nedenle terim içeri yok aynı gizemini tutmaz arasında çok bulanık bir çizgi çizer Diğer diller. Lisp programcıları, programlarını DSL katmanları olarak yazma eğilimindedir;

  • Enlive (HTML çiftleşmiş)
  • LazyTest (Birim testi)
  • :, burada (özel bir sırada) DSL-lik ekran önemsiz olmayan düzeylerini söyleyebiliriz birkaçıdır söyledikten fnparse (ayrıştırıcı jeneratör)
  • Midje (test & alaycı)
  • byte-spec (ikili-biçimleri)
  • Vijual (grafik çizim)
  • Trammel (kısıt programlama)
  • Cascalog (Hadoop'un ağırlık datalog sözdizimi /)
  • Incanter (R-benzeri çevre)
  • Sandbar (HTML seansları, form, kimlik doğrulaması)
  • ClojureQL (SQL)
  • mini-kanren (gömülü mantık programlama)
  • Leiningen (build aracı)
  • sexpbot (eklenti kemer ile IRC bot)
+2

Oh wow! Teşekkürler David. – fogus

+1

Harika! Bir DSL de bir DSL olarak da düşünebiliriz. – Jonas

+0

Bir DSL'in 'iyi' örneği olmasa da, IRC bot'umun hata makrolarım, sexpbot eklentileri oluşturmak için bir DSL'dir. Kullanımdaki örneklerini src/sexpbot/plugins'te ve src/sexpbot/response.clj dosyasındaki gerçek uygulamada bulabilirsiniz. İsterseniz listeye ekleyebilirsiniz. Sadece eklemek için yepyeni bir cevap oluşturmamayı tercih ederim, çünkü seninki çok mükemmel. – Rayne

7

SQL DSL ama vitrin herhangi Lisp lehçesi gibi

+2

Bu etkileyici. Bu dilin önemine işaret etti ... –

+0

Bağlantı değişmiş gibi görünüyor. – nha

+0

sabit link için archive.org adresine gidin –

3

Enlive yaratıcısı 2010 Clojure-conj konferanstan Clojure kullanarak DSL'lere nasıl oluşturulacağı hakkında düşünme üzerine bir kullanışlı konuşma, Christophe Büyük: http://blip.tv/clojure/christophe-grand-not-dsl-macros-4540700 (slaytlar here vardır) .

Ayrıca, DSL tasarımında olduğu gibi Ring tasarımını da sayabilirim. Ring'in yaratıcısı Mark McGranaghan'ın konuşmasına bakın: http://clojure.blip.tv/clojure/mark-mcgranaghan-one-ring-to-bind-them-4724955 (slides)

İlgili konular