On Wednesday, 19 April 2017 at 03:49:09 UTC, bpr wrote:
I don't think I've ever heard from Common Lisp, Scheme or
Clojure programmers that they'd like to remove macros from
their respective languages for the reasons you mention. I don't
see the disasters there. The Julia folks looked at the Lisp
experience and decided to include macros.
Lisp AST is minimal.
Both Rust and Nim support macros. Scala too. Not long enough
for the disaster yet?
How many Rust programmers write their own macros? My impression
is that Rust macros is a temporary fix because they don't have
another meta programming scheme in place. I also believe that
Rust macros can break between releases.
last resort. But they're very powerful, and sometimes I'm not
smart enough to figure out how to do what I want cleanly with
less powerful features.
Like what?
Certainly, term-rewrite-languages are powerful, e.g. the language
Pure:
https://en.wikipedia.org/wiki/Pure_(programming_language)
But I don't quite see it as an important feature for an
imperative language with an AST as complex as D and with rather
non-uniform semantics.
If you want AST-macros in D you should also argue for redefining
the core language, and turn everything that is unnecessary and
that can be done as lowering into macros (e.g. "for each").