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

minh thu noteed at gmail.com
Wed Oct 7 14:06:17 EDT 2009

2009/10/7 Günther Schmidt <gue.schmidt at web.de>:
> Hi Don,
>> I've informally argued that a true DSL -- separate from a good API --
>> should have semantic characteristics of a language: binding forms,
>> control structures, abstraction, composition. Some have type systems.
> That is one requirement that confuses me, abstraction.
> I thought of DSLs as "special purpose" languages, ie. you give your DSL
> everything it needs for that purpose.
> Why would it also need the ability to express even further abstractions, it
> is supposed to *be* the abstraction.
> Günther
> _______________________________________________
> Haskell-Cafe mailing list
> Haskell-Cafe at haskell.org
> http://www.haskell.org/mailman/listinfo/haskell-cafe


Programming abstractions at the DSL level, not to further abstract
what the DSL covers.

Functions, for instance, are typical abstraction means offered by
programming languages. Even if your language is specific to some
domain, being able to create your own functions, and not only rely on
those provided by the DSL implementation, is important.

Imagine a (E)DSL for 3D programming (e.g. shading language): the
language is designed to fit well the problem (e.g. in this case, 3D
linear algebra, color operations, ...) but you'll agree it would be a
shame to not be able to provide your own functions.


More information about the Haskell-Cafe mailing list