On Thursday, 14 November 2013 at 18:23:20 UTC, Andrei
Alexandrescu wrote:
On 11/14/13 2:17 AM, Walter Bright wrote:
On 11/14/2013 2:07 AM, Chris Cain wrote:
I guess I would have thought the exact opposite from you...
that this is
precisely something that *should* be done with a
library-defined macro.
Again, I reiterate what experience shows happens with macro
systems in
the long term.
FWIW Walter talked me back around 2005-2006 into abandoning my
own ideas about languages with configurable syntax.
This is not proposing to configure syntax.
There are quite a few failings about comparing programming
languages against natural languages, but here's one that I
think does have value: fixed syntax is ingrained into people's
notion of language, and swapping syntax within an otherwise
identical linguistic context is extremely taxing on the brain.
Anyone who's read with a C or C++ codebase full of macros and
#if-driven code can attest how unbelievably difficult
juxtapositions of the normal syntax with preprocessor syntax
can quickly become. That's part of why "static if" has been so
successful in D - it drives new semantics but within the same
syntax.
C macro can introduce new syntax. This cannot.
Natural languages are "humans complete" because they are the
one vehicle we use to describe and manipulate our understanding
of the entire reality. If configurable syntax was something
necessary to model the world, it would have inevitably occurred
in natural languages one way or another. Instead, all human
languages (with no exception I know of) have fixed syntax and
prefer to add modeling power in other ways. There must be
something about this.
Andrei
I think this very post pretty much show that you missed the point
of the DIP.