[REBOL] Re: A prototype typechecker
From: brett:codeconscious at: 9-Nov-2002 11:30
> JS> Am I right to assume that Rebol 'dialects mean exactly
> JS> the same as what others call DSELs - Domain Specific Embedded
> JS> Languages?
>
> Yes.
I experienced an ecclectic mixture of thoughts when reading this:
1) Guessing what others mean is always fraught :^)
2) "Domain Specific Embedded Language" doesn't sound like a useful
description in the context of the goals of REBOL. "Dialect" by contrast
involves human communication or at least human/computer interaction where
Domain Specific Embedded Language has no such immediate meaning. Of course,
I just impliedly excluded programming from human/computer interaction then,
but I can do that because programmers are back to being ignored in this post
IT bust :^)
My real point though is that "Dialect" implies a different audience to
Domain Specific Embedded Language
(DSEL).
I went searching using Google on "Domain Specific Embedded Language" to see
what others mean by that.
I found this quote "A DSEL is just a subroutine library, but written in a
functional language such as Haskell." (*) Well to me that certainly doesn't
sound like a good description of a dialect. I'm not entirely sure it is an
accurate description of a domain specific embedded language either - but I'm
not sure.
Paul Hudak wrote: "... let's inherit the infrastructure of some other
language---tailoring it in special ways to the domain of interest---thus
yielding a domain-specific embedded language (DSEL)." (**) To me, in the
context of REBOL, that last quote can provide useful understanding.
But I still wonder. I agree with the last quote in general, that is REBOL
dialects by definition inherit infrastructure (loaded datatypes) from their
host language. But REBOL dialects do not inherit a grammar, the Dialect
designer creates that. I wonder when "others" refer to DSELs in their
language of interest - do they assume the grammar of the host language -
perhaps even not concsiously? Maybe that is what the fellow in the first
quote did.
>From the overview of "Expressions" in the REBOL core user guide:
Expressions can be processed in one of two ways: directly by the REBOL
interpreter, or indirectly by a REBOL script. A script processed indirectly
is called a dialect.
A little further on in the user guide: "The
distinction REBOL makes is that information is either directly or indirectly
interpreted. The distinction is not whether information is code or data, but
how it is processed." To me these descriptions invoke a broader sense of
possibilities than the term DSEL does. In lines up with my believe that
meaning is not *in* a message it is overlayed on a message when that message
is interpreted, another reason I'm keen on REBOL.
As a bit of a side note, I believe you can substitute "script" for "block"
in that first user guide quote and conclude that any function that takes a
block as an argument could in some sense be an interpreter of a dialect.
So after all that I'd tend to a concisely answer the original questions with
Probably Not - not exactly.
Regards,
Brett.
Online references:
(*)
http://web.comlab.ox.ac.uk/oucl/research/areas/progtools/festabstracts/kevin
.pdf
(**)
http://cs-www.cs.yale.edu/homes/hudak-paul/hudak-dir/ACM-WS/position.html