Hi Joe
Am 07.10.2009, 17:26 Uhr, schrieb Joe Fredette <jfred...@gmail.com>:
Let me add to this, as I've used the term "DSL" without (*gasp*) fully
understanding it before.
Welcome to the club then! :)
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?
Also,
"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.
Well that part I think I can answer.
An EDSL is when you don't start from scratch. IE. when you do not, let's
say build a compiler that parses a String and then eventually "executes"
it.
Rather you define the "Terms", ie. primitive Terms (Terminals) and
Non-Terminals with the means of the "host" language (Haskell in my case).
Also, any good introductory papers/books/other resources on DSLs and how
to design, build and use them would be _lovely_.
Well as a book I could recommend Paul Hudaks "School of Expression". The
way he abstracts is by means of using a DSL. He assembles objects,
Geometrics Regions, Triangles, circles, squares etc. combines them with
the help of functions and *later* evaluates them. Now he is definatly
using a DSL here, but that is by no means the only way of implementing the
abstract through a DSL. Once that has sunk in I suggest papers from Oleg
and others on the subject, but to get started SOE would be a good idea.
Günther
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe