On Wed, Dec 5, 2012 at 8:32 AM, Tillmann Rendel <rendel@informatik.uni-marburg.de> wrote:
I mean internal == embedded, independently of deep vs. shallow, following Martin Fowler [1].
[1] http://martinfowler.com/bliki/DomainSpecificLanguage.html
If I look here [2] I see:
"An internal DSL is just a particular idiom of writing code in the host language. So a Ruby internal DSL is Ruby code, just written in particular style which gives a more language-like feel. As such they are often called Fluent Interfaces orEmbedded DSLs. An external DSL is a completely separate language that is parsed into data that the host language can understand."
Fowler places undue emphasis on the "completely separate language", but other than that, the correspondence is clear. I wonder how he thinks about C implementing C? Or ghc implementing haskell in haskell? Would he say, "Well, clearly C and haskell are not DSLs, they are general purpose languages!"?
-- Kim-Ee