[Haskell-cafe] What *is* a DSL?

Joe Fredette jfredett at gmail.com
Wed Oct 7 11:26:11 EDT 2009

Let me add to this, as I've used the term "DSL" without (*gasp*) fully  
understanding it before.

In addition to "What is a DSL", I'd like to ask:

"How is a DSL different from an API?" -- in the sense that an API is a  
set of, say, combinators to filter email + a monad in which to combine  
them. Or even the API in the more traditional sense of the set of  
exposed operations on a given type. Is an API a kind of DSL? A kind of  
Embedded DSL?


"What is the difference between an EDSL and a DSL?" -- I've got a  
vague intuition of the difference, but am unsure how to particularly  
delineate them.

Also, any good introductory papers/books/other resources on DSLs and  
how to design, build and use them would be _lovely_.


On Oct 7, 2009, at 11:10 AM, Günther Schmidt wrote:

> Hi all,
> for people that have followed my posts on the DSL subject this  
> question probably will seem strange, especially asking it now.
> I have read quite a lot lately on the subject, most of it written by  
> the great old ones, (come on guys you know whom I mean :)).
> What I could gather from their papers was, that a DSL is basically  
> something entirely abstract as such, ie. it allows you build and  
> combine expressions in a language which is specific for your problem  
> domain.
> Irregardless of further details on how to do that, and there are  
> quite a few, the crux as such is that they are abstract of "meaning".
> The meaning depends how you *evaluate* the expression, which can be  
> in more than merely one way, which is where, as far as I understand  
> it, the true power lies.
> So, you might wonder, since I figured it out this far, why ask what  
> a DSL is?
> Because out there I see quite a lot of stuff that is labeled as DSL,  
> I mean for example packages on hackage, quite useuful ones too,  
> where I don't see the split of assembling an expression tree from  
> evaluating it, to me that seems more like combinator libraries.
> Thus:
> What is a DSL?
> Günther
> _______________________________________________
> Haskell-Cafe mailing list
> Haskell-Cafe at haskell.org
> http://www.haskell.org/mailman/listinfo/haskell-cafe

More information about the Haskell-Cafe mailing list